Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Než aplikace spustí dávku příkazů, měla by nejprve zkontrolovat, jestli jsou podporované. K tomu aplikace volá SQLGetInfo s možnostmi SQL_BATCH_SUPPORT, SQL_PARAM_ARRAY_ROW_COUNTS a SQL_PARAM_ARRAY_SELECTS. První možnost vrátí, jestli se v explicitních dávkách a procedurách podporují příkazy generování počtu řádků a sad výsledků, zatímco druhé dvě možnosti vrátí informace o dostupnosti počtu řádků a sad výsledků v parametrizovaném spuštění.
Dávky příkazů se provádějí prostřednictvím sqlExecute nebo SQLExecDirect. Například následující volání provede explicitní dávku příkazů k otevření nové prodejní objednávky.
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);
Když se spustí dávka příkazů generujících výsledky, vrátí jeden nebo více počtů řádků nebo sady výsledků. Informace o tom, jak je načíst, najdete v tématu Více výsledků.
Pokud dávka příkazů obsahuje značky parametrů, jsou očíslovány v rostoucím pořadí parametrů, protože jsou v jakémkoli jiném příkazu. Například následující dávka příkazů má parametry očíslované od 1 do 21; ty v prvním příkazu INSERT jsou očíslovány 1 až 5 a ty v posledním příkazu INSERT jsou očíslovány 18 až 21.
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 (?, ?, ?, ?);
Další informace o parametrech naleznete v části Parametry příkazu dále v této části.