Dela via


Utföra batchar

Innan ett program kör en batch med instruktioner bör det först kontrollera om de stöds. För att göra detta anropar programmet SQLGetInfo med alternativen SQL_BATCH_SUPPORT, SQL_PARAM_ARRAY_ROW_COUNTS och SQL_PARAM_ARRAY_SELECTS. Det första alternativet returnerar om radantalgenererande och resultatuppsättningsgenererande instruktioner stöds i explicita batchar och procedurer, medan de två senare alternativen returnerar information om tillgängligheten för radantal och resultatuppsättningar i parametriserad körning.

Batchar med instruktioner körs via SQLExecute eller SQLExecDirect. Följande anrop kör till exempel en explicit batch med instruktioner för att öppna en ny försäljningsorder.

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);  

När en batch med resultatgenererande instruktioner körs returnerar den ett eller flera radantal eller resultatuppsättningar. Information om hur du hämtar dessa finns i Flera resultat.

Om en sats med -instruktioner innehåller parametermarkörer numreras dessa i ökande parameterordning som de finns i någon annan instruktion. Följande batch med -instruktioner har till exempel parametrar som är numrerade från 1 till 21. de i den första INSERT-instruktionen är numrerade 1 till 5 och de i den sista INSERT-instruktionen numreras 18 till 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 (?, ?, ?, ?);  

Mer information om parametrar finns i Instruktionsparametrar senare i det här avsnittet.