Ausführen von Batches
Bevor eine Anwendung eine Reihe von Anweisungen ausführt, sollte zuerst überprüft werden, ob sie unterstützt werden. Dazu ruft die Anwendung SQLGetInfo mit den Optionen SQL_BATCH_SUPPORT, SQL_PARAM_ARRAY_ROW_COUNTS und SQL_PARAM_ARRAY_SELECTS auf. Die erste Option gibt zurück, ob Zeilenzählungs- und Resultset-generierende Anweisungen in expliziten Batches und Prozeduren unterstützt werden, während die letzten beiden Optionen Informationen über die Verfügbarkeit von Zeilenanzahlen und Resultsets in parametrisierter Ausführung zurückgeben.
Batches von Anweisungen werden über SQLExecute oder SQLExecDirect ausgeführt. Beispielsweise führt der folgende Aufruf einen expliziten Batch von Anweisungen aus, um einen neuen Verkaufsauftrag zu öffnen.
SQLCHAR *BatchStmt =
"INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)"
"VALUES (2002, 1001, {fn CURDATE()}, 'Garcia', 'OPEN');"
"INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 1, 1234, 10);"
"INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 2, 987, 8);"
"INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 3, 566, 17);"
"INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 4, 412, 500)";
SQLExecDirect(hstmt, BatchStmt, SQL_NTS);
Wenn eine Reihe von Ergebnisgenerierungsanweisungen ausgeführt wird, gibt sie eine oder mehrere Zeilenanzahlen oder Resultsets zurück. Informationen zum Abrufen dieser Ergebnisse finden Sie unter "Mehrere Ergebnisse".
Wenn eine Reihe von Anweisungen Parametermarkierungen enthält, werden diese in zunehmender Parameterreihenfolge nummeriert, wie sie sich in einer anderen Anweisung befinden. Die folgende Reihe von Anweisungen enthält z. B. Parameter, die von 1 bis 21 nummeriert sind; diejenigen in der ersten INSERT-Anweisung sind 1 bis 5 nummeriert, und die in der letzten INSERT-Anweisung werden 18 bis 21 nummeriert.
INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)
VALUES (?, ?, ?, ?, ?);
INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (?, ?, ?, ?);
INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (?, ?, ?, ?);
INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (?, ?, ?, ?);
INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (?, ?, ?, ?);
Weitere Informationen zu Parametern finden Sie unter "Anweisungsparameter" weiter unten in diesem Abschnitt.