我创建了一个SQL脚本来在不同的数据库中添加条目。但是,当我通过SQL Server Management Studio运行该脚本时。
declare @address varchar(50)
set @address = 'Hope'
use DB1
go
insert into Address
values (@address)
go
use DB2
go
insert into Address
values (@address)
go
出现以下错误:
必须声明标量变量"@address "
在这一点上,我完全糊涂了,因为我在执行insert
语句之前声明了变量@address
,这是因为我正在遍历不同的数据库吗?
到目前为止,我只是将实际值放入insert
语句中,只是为了完成任务,尽管我想知道是什么导致了错误。
4条答案
按热度按时间sczxawaw1#
变量@address只存在于定义它的批处理中,批处理由go语句分隔,在此它超出范围。
试试这个:
vshtjzan2#
这是GO语句。
所有局部变量声明必须分组在一个批处理中。这是通过在引用该变量的最后一条语句之后才使用GO命令来实现的。(from MSDN)
mfuanj7w3#
这是因为在声明变量的语句和使用变量的语句之间使用了
go
。go
命令不是SQL命令,它是Management Studio中会话之间的分隔符。只需删除查询中的所有go
命令,就可以一直使用该变量。kg7wmglp4#
我也面临着同样的问题...所以我把所有这些线都运行在一起,效果很好。一定要试着把所有的线都运行在一起。