变量的多次使用之GO

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

posted @ 2013-04-16 21:51  _cc  阅读(1232)  评论(4编辑  收藏  举报