GO:向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号
1、批处理
USE TEST GO IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1; CREATE TABLE T1( ID INT IDENTITY(1,1) PRIMARY KEY, TT VARCHAR(10) ) DECLARE @VV VARCHAR(10) SET @VV = N'测试1' insert into T1(TT) values(@VV) GO SET @VV = N'测试2' insert into T1(TT) values(@VV)
这个时候会有报错,提示我们有变量没有定义:
(1 行受影响) 消息 137,级别 15,状态 1,第 1 行 必须声明标量变量 "@VV"。 消息 137,级别 15,状态 2,第 2 行 必须声明标量变量 "@VV"。
但其实我们已经定义了的,为什么还会有这个错误呢?因为GO把上面的语句已经结束,下面是另外的一个语句的开始。
我们可以尝试把GO注释掉,如下面所示:
USE TEST GO IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1; CREATE TABLE T1( ID INT IDENTITY(1,1) PRIMARY KEY, TT VARCHAR(10) ) DECLARE @VV VARCHAR(10) SET @VV = N'测试1' insert into T1(TT) values(@VV) --GO SET @VV = N'测试2' insert into T1(TT) values(@VV)
这个很显示的不会报错,并且有查询结果:
2、对数据进行循环插入操作
insert into T1(TT) values(200) GO 100
则会对t1列插入200的数据操作100次。
数据库环境 :SQL SERVER 2008