バッチの指定

バッチはデータベース API の一部として実装されます。

  • ADO では、バッチは Command オブジェクトの CommandText プロパティに含まれている、次のような一連の Transact-SQL ステートメントです。

    Dim Cmd As New ADODB.Command
    Set Cmd.ActiveConnection = Cn
    Cmd.CommandText = "SELECT * FROM Purchasing.Vendor; SELECT * FROM Production.Product"
    Cmd.CommandType = adCmdText
    Cmd.Execute
    
  • OLE DB では、バッチはコマンド テキストの設定に使用する文字列に含まれている、次のような一連の Transact-SQL ステートメントです。

    WCHAR* wszSQLString =
    L"SELECT * FROM HumanResources.Employee; SELECT * FROM Production.Product";
    hr = pICommandText->SetCommandText
          (DBGUID_DBSQL, wszSQLString)
    
  • ODBC では、バッチは SQLPrepare または SQLExecDirect の呼び出しに含まれている、次のような一連の Transact-SQL ステートメントです。

    SQLExecDirect(hstmt1,
       "SELECT * FROM HumanResources.Employee; SELECT * FROM Production.Product",
    SQL_NTS):
    

Microsoft Access など、一部のデータ アクセス ツールには明示的なバッチの終端文字がありません。

GO コマンド

Microsoft SQL Server Management Studio、sqlcmd ユーティリティ、および osql ユーティリティは GO コマンドを使用してバッチの終了を示します。GO は Transact-SQL ステートメントではなく、その役割は、いくつの SQL ステートメントをバッチに含めるかをユーティリティに示すことだけです。SQL Server Management Studio と osql では、ある GO コマンドから次の GO コマンドまでのすべての Transact-SQL ステートメントが、SQLExecDirect に送信される文字列に含められます。

たとえば、次のステートメントを SQL Server Management Studio で実行するとします。

SELECT @@VERSION
SET NOCOUNT ON
GO

この場合、SQL Server Management Studio は上記のステートメントを次のステートメントとして処理します。

SQLExecDirect(hstmt,
"SELECT @@VERSION SET NOCOUNT ON",
SQL_NTS);

バッチは 1 つの実行プランにコンパイルされるため、ロジックを完全にする必要があります。あるバッチ用に作成された実行プランは、他のバッチで宣言された変数を参照することができません。コメントは同じバッチ内で完了する必要があります。