バッチの指定
バッチはデータベース 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 つの実行プランにコンパイルされるため、ロジックを完全にする必要があります。あるバッチ用に作成された実行プランは、他のバッチで宣言された変数を参照することができません。コメントは同じバッチ内で完了する必要があります。