T-SQL:批GO使用实例(十四)

批是由客户端应用程序作为一个单元发送给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

可以用来批量新增语句

猜你喜欢

转载自www.cnblogs.com/yuanzijian-ruiec/p/9483923.html