バッチの実行

アプリケーションは、ステートメントのバッチを実行する前に、最初にそれらがサポートされているかどうかを確認する必要があります。 これを行うために、アプリケーションは、SQL_BATCH_SUPPORT、SQL_PARAM_ARRAY_ROW_COUNTS、およびSQL_PARAM_ARRAY_SELECTSオプションを使用して SQLGetInfo を呼び出します。 最初のオプションは、明示的なバッチとプロシージャで行数生成ステートメントと結果セット生成ステートメントがサポートされているかどうかを返します。後者の 2 つのオプションは、パラメーター化された実行での行数と結果セットの可用性に関する情報を返します。

ステートメントのバッチは、SQLExecute または SQLExecDirect を使用して実行されます。 たとえば、次の呼び出しでは、ステートメントの明示的なバッチを実行して、新しい販売注文を開きます。

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

結果生成ステートメントのバッチが実行されると、1 つ以上の行数または結果セットが返されます。 これらを取得する方法については、「複数の結果」を参照してください。

ステートメントのバッチにパラメーター マーカーが含まれている場合は、他のステートメントと同様に、パラメーターの順序を増やして番号が付けられます。 たとえば、次のステートメントのバッチには、1 から 21 までのパラメーター番号が付きます。最初 の INSERT ステートメントの番号は 1 から 5 で、最後の INSERT ステートメントの番号は 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 (?, ?, ?, ?);  

パラメーターの詳細については、このセクションで後述する「ステートメント パラメーター」を参照してください。