批处理作为数据库 API 的一部分执行。
Dim Cmd As New ADODB.Command Set Cmd.ActiveConnection = Cn Cmd.CommandText = "SELECT * FROM Suppliers; SELECT * FROM Products"Cmd.CommandType = adCmdText Cmd.Execute
WCHAR* wszSQLString =
L"SELECT * FROM Employees; SELECT * FROM Products";
hr = pICommandText->SetCommandText
(DBGUID_DBSQL, wszSQLString)
SQLExecDirect(hstmt1,"SELECT * FROM Employees; SELECT * FROM Products", SQL_NTS):
dbcmd (dbproc,
"SELECT * FROM Suppliers; SELECT * FROM Products");
dbsqlexec (dbproc);
一些数据访问工具(如 Microsoft® Access)没有显式批处理终止符。
SQL 查询分析器、osql 实用工具和 isql 实用工具使用 GO 命令作为批处理结尾的信号。GO 不是 Transact-SQL 语句;它只是向实用工具表明批处理中包含多少条 SQL 语句。在 SQL 查询分析器和 osql 中,在 GO 命令之间的所有 Transact-SQL 语句放在发送给 SQLExecDirect 的字符串中。在 isql 中,所有在两个 GO 命令之间的 Transact-SQL 语句在执行之前放入命令缓冲区。
例如,如果在 SQL 查询分析器中执行下列语句:
SELECT @@VERSION
SET NOCOUNT ON
GO
SQL 查询分析器将进行下列等效操作:
SQLExecDirect(hstmt,
"SELECT @@VERSION SET NOCOUNT ON",
SQL_NTS);
因为一个批处理是编译到一个执行计划中,所以在逻辑上必须完整。为一个批处理创建的执行计划不能引用任何在另一个批处理中声明的变量。注释必须在一个批处理中开始并结束。有关更多信息,请参见 SQL 查询分析器。