批是由客户端应用程序作为一个单元发送给SQL Server 执行的一条或多条语句 如果批中出现错误就整个批都不会交给SQL SERVER 执行
PRINT '第一批';GO -- Invalid batch PRINT '第二批'; SELECT custid FROM Sales.Customers; SELECT orderid FOM Sales.Orders; GO -- Valid batch PRINT '第三批'; SELECT empid FROM HR.Employees;
一起执行会发现第二批出现错误就没有提交执行
批由GO命令 隔断
DECLARE @i AS INT = 10; -- Succeeds PRINT @i; GO -- Fails PRINT @i; GO
Go 隔断了 @i 变量 就会报错
例如还有一种情况
IF OBJECT_ID('Sales.MyView', 'V') IS NOT NULL DROP VIEW Sales.MyView; CREATE VIEW Sales.MyView AS SELECT YEAR(orderdate) AS orderyear, COUNT(*) AS numorders FROM Sales.Orders GROUP BY YEAR(orderdate); GO
CREATE VIEW Sales.MyView
AS
create view 必须是批中第一个语句 所以 在create view 前面 加 go命令 进行截断
还有 在同一批中更改架构 会出现错误 需要放到两个批中
CREATE TABLE dbo.T1(col1 INT); GO -- Following fails ALTER TABLE dbo.T1 ADD col2 INT; SELECT col1, col2 FROM dbo.T1; GO
也可以用GO 循环运行批如:
print '1123' GO 5
可以用来批量新增语句