SQL Server 错误:多个数据库中的插入语句“必须声明标量变量

hgc7kmma  于 2022-12-22  发布在  其他
关注(0)|答案(4)|浏览(253)

我创建了一个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语句中,只是为了完成任务,尽管我想知道是什么导致了错误。

sczxawaw

sczxawaw1#

变量@address只存在于定义它的批处理中,批处理由go语句分隔,在此它超出范围。
试试这个:

declare @address varchar(50)
set @address = 'Hope'

insert into DB1.dbo.Address
 values (@address)

insert into DB2.dbo.Address
 values (@address)
go
vshtjzan

vshtjzan2#

这是GO语句。
所有局部变量声明必须分组在一个批处理中。这是通过在引用该变量的最后一条语句之后才使用GO命令来实现的。(from MSDN

mfuanj7w

mfuanj7w3#

这是因为在声明变量的语句和使用变量的语句之间使用了go
go命令不是SQL命令,它是Management Studio中会话之间的分隔符。只需删除查询中的所有go命令,就可以一直使用该变量。

kg7wmglp

kg7wmglp4#

我也面临着同样的问题...所以我把所有这些线都运行在一起,效果很好。一定要试着把所有的线都运行在一起。

相关问题