Sdílet prostřednictvím


Provádění šarží

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.