Partager via


Exécution de lots

Avant qu’une application exécute un lot d’instructions, elle doit d’abord case activée si elles sont prises en charge. Pour ce faire, l’application appelle SQLGetInfo avec les options SQL_BATCH_SUPPORT, SQL_PARAM_ARRAY_ROW_COUNTS et SQL_PARAM_ARRAY_SELECTS. La première option retourne si les instructions de génération de nombre de lignes et de génération de jeux de résultats sont prises en charge dans les lots et procédures explicites, tandis que les deux dernières options retournent des informations sur la disponibilité des nombres de lignes et des jeux de résultats dans l’exécution paramétrable.

Les lots d’instructions sont exécutés via SQLExecute ou SQLExecDirect. Par exemple, l’appel suivant exécute un lot explicite d’instructions pour ouvrir une nouvelle commande client.

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

Lorsqu’un lot d’instructions de génération de résultats est exécuté, il retourne un ou plusieurs nombres de lignes ou jeux de résultats. Pour plus d’informations sur la façon de les récupérer, consultez Plusieurs résultats.

Si un lot d’instructions inclut des marqueurs de paramètres, ceux-ci sont numérotés dans l’ordre croissant des paramètres, car ils se trouvent dans n’importe quelle autre instruction. Par exemple, le lot d’instructions suivant comporte des paramètres numérotés de 1 à 21 ; ceux de la première instruction INSERT sont numérotés 1 à 5 et ceux de la dernière instruction INSERT sont numérotés 18 à 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 (?, ?, ?, ?);  

Pour plus d’informations sur les paramètres, consultez Paramètres d’instruction, plus loin dans cette section.