Esecuzione di batch

Prima di eseguire un batch di istruzioni, un'applicazione deve verificare se sono supportate. A tale scopo, l'applicazione chiama SQLGetInfo con le SQL_BATCH_SUPPORT, SQL_PARAM_ARRAY_ROW_COUNTS e SQL_PARAM_ARRAY_SELECTS seguenti. La prima opzione indica se le istruzioni per la generazione del conteggio delle righe e per la generazione di set di risultati sono supportate in batch e procedure espliciti, mentre le ultime due opzioni restituiscono informazioni sulla disponibilità dei conteggi delle righe e dei set di risultati nell'esecuzione con parametri.

I batch di istruzioni vengono eseguiti tramite SQLExecute o SQLExecDirect. Ad esempio, la chiamata seguente esegue un batch esplicito di istruzioni per aprire un nuovo ordine di vendita.

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

Quando viene eseguito un batch di istruzioni che generano risultati, vengono restituiti uno o più conteggi di righe o set di risultati. Per informazioni su come recuperare questi elementi, vedere Multiple Results.

Se un batch di istruzioni include marcatori di parametro, questi vengono numerati in ordine crescente come in qualsiasi altra istruzione. Ad esempio, il batch di istruzioni seguente include parametri numerati da 1 a 21. quelli nella prima istruzione INSERT sono numerati da 1 a 5 e quelli nell'ultima istruzione INSERT sono numerati da 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 (?, ?, ?, ?);  

Per altre informazioni sui parametri, vedere Parametri di istruzione, più avanti in questa sezione.