Delen via


Batches uitvoeren

Voordat een toepassing een batch met instructies uitvoert, moet eerst worden gecontroleerd of deze worden ondersteund. Hiervoor roept de toepassing SQLGetInfo aan met de opties SQL_BATCH_SUPPORT, SQL_PARAM_ARRAY_ROW_COUNTS en SQL_PARAM_ARRAY_SELECTS. De eerste optie retourneert of rijaantal-genererende en resultaatset-genererende instructies worden ondersteund in expliciete batches en procedures, terwijl de laatste twee opties informatie retourneren over de beschikbaarheid van het aantal rijen en resultatensets in geparameteriseerde uitvoering.

Batches met instructies worden uitgevoerd via SQLExecute of SQLExecDirect. Met de volgende aanroep wordt bijvoorbeeld een expliciete batch met instructies uitgevoerd om een nieuwe verkooporder te openen.

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

Wanneer een batch met instructies voor het genereren van resultaten wordt uitgevoerd, retourneert deze een of meer rijen of resultatensets. Zie Meerdere resultaten voor meer informatie over het ophalen van deze resultaten.

Als een batch instructies parametermarkeringen bevat, worden deze genummerd in toenemende parametervolgorde, zoals in elke andere instructie. De volgende batch met instructies heeft bijvoorbeeld parameters genummerd van 1 tot en met 21; die in de eerste INSERT-instructie zijn genummerd 1 tot en met 5 en die in de laatste INSERT-instructie zijn genummerd 18 tot en met 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 (?, ?, ?, ?);  

Zie Instructieparameters verderop in deze sectie voor meer informatie over parameters.