Share via


執行批次

在應用程式執行陳述式批次之前,它應該先檢查這些陳述式是否受到支援。 若要這樣做,應用程式呼叫 SQLGetInfo,其中包含 SQL_BATCH_SUPPORT、SQL_PARAM_ARRAY_ROW_COUNTS 和 SQL_PARAM_ARRAY_SELECTS 選項。 第一個選項會傳回在明確的批次和程序中是否支援產生資料列計數和結果集的陳述式,而後兩個選項則會傳回參數化執行中資料列計數和結果集可用性的相關資訊。

陳述式批次會透過 SQLExecuteSQLExecDirect 來執行。 舉例來說,以下呼叫會執行明確的陳述式批次,以開立新的銷售訂單。

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 到 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 (?, ?, ?, ?);  

如需更多關於參數的詳細資訊,請參閱本節稍後討論的陳述式參數