以下示例是使用 SQL 查询分析器和 osql 实用工具的 GO 命令定义批处理边界的脚本。
下例创建一个视图。因为 CREATE VIEW 必须是批处理中的唯一语句,所以需要 GO 命令将 CREATE VIEW 语句与其周围的 USE 和 SELECT 语句隔离。
USE pubs
GO /* Signals the end of the batch */
CREATE VIEW auth_titles
AS
SELECT *
FROM authors
GO /* Signals the end of the batch */
SELECT *
FROM auth_titles
GO /* Signals the end of the batch */
下例说明将几个批处理组合成一个事务。BEGIN TRANSACTION 和 COMMIT 语句分隔事务边界。BEGIN TRANSACTION、USE、CREATE TABLE、SELECT 和 COMMIT 语句都包含在它们各自的单语句批处理中。所有的 INSERT 语句包含在一个批处理中。
BEGIN TRANSACTION
GO
USE pubs
GO
CREATE TABLE mycompanies
(
id_num int IDENTITY(100, 5),
company_name nvarchar(100)
)
GO
INSERT mycompanies (company_name)
VALUES ('New Moon Books')
INSERT mycompanies (company_name)
VALUES ('Binnet & Hardley')
INSERT mycompanies (company_name)
VALUES ('Algodata Infosystems')
INSERT mycompanies (company_name)
VALUES ('Five Lakes Publishing')
INSERT mycompanies (company_name)
VALUES ('Ramona Publishers')
INSERT mycompanies (company_name)
VALUES ('GGG&G')
INSERT mycompanies (company_name)
VALUES ('Scootney Books')
INSERT mycompanies (company_name)
VALUES ('Lucerne Publishing')
GO
SELECT *
FROM mycompanies
ORDER BY company_name ASC
GO
COMMIT
GO
下列脚本说明两个问题。首先,变量 @MyVar 在第二个批处理中定义而在第三个批处理中引用。而且第二个批处理中有注释的开始但没有结尾。第三个批处理有注释的结尾,但是当 osql 读取 GO 命令时,它将第一个批处理发送到 Microsoft® SQL Server™,由于"/*"没有与之匹配的"*/"而产生语法错误。
USE Northwind
GO
DECLARE @MyVar INT
/* Start of the split comment.
GO
End of the split comment. */
SELECT @MyVar = 29
GO