变量的多次使用之GO

本文介绍SQLServer中使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值