Eseguire i batch
Prima di eseguire un batch di istruzioni, un'applicazione deve verificare se sono supportate. Per farlo, l'applicazione chiama SQLGetInfo con le opzioni SQL_BATCH_SUPPORT, SQL_PARAM_ARRAY_ROW_COUNTS e SQL_PARAM_ARRAY_SELECTS. La prima opzione restituisce se le istruzioni di generazione del conteggio delle righe e del set di risultati sono supportate in batch e procedure esplicite, mentre le ultime due opzioni restituiscono informazioni sulla disponibilità dei conteggi delle righe e dei set di risultati per l’esecuzione con parametri.
I batch di istruzioni vengono eseguiti tramite SQLExecute o SQLExecDirect. Per esempio, la chiamata seguente esegue un batch esplicito di istruzioni per aprire un nuovo ordine cliente.
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 generate da dei risultati, questo restituisce uno o più conteggi di righe o set di risultati. Per avere informazioni su come recuperarli, vedere Risultati molteplici.
Se un batch di istruzioni include marcatori di parametro, questi vengono numerati in ordine di parametro crescente come in qualsiasi altra istruzione. Per esempio, i parametri del batch di istruzioni seguente sono numerati da 1 a 21: quelli nella prima istruzione INSERISCI sono numerati da 1 a 5 mentre quelli nell'ultima istruzione INSERISCI 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 ulteriori informazioni sui parametri, vedere Parametri di istruzione più avanti in questa sezione.