这是我的疑问:
它要求我声明标量变量@acmd
,但我是否只是在之前的声明中这样做了?
declare @select nvarchar(100), @from nvarchar(50),
@where nvarchar(50), @acmd nvarchar(150)
set @select = 'Select * from Customers'
set @from = ' from Customers'
set @where = 'Where Country=''USA'
set @acmd = @select + @from + @where
exec sp_executeSql @acmd
答案 0 :(得分:1)
有很多问题。设置@where
变量应为:
set @where= ' Where Country=''USA'' '
设置@select
应为:
set @select='Select * '
以下是完全更正的SQL:
declare @select nvarchar(100),@from nvarchar(50),@where nvarchar(50),@acmd nvarchar(150)
set @select='Select * '
set @from=' from Customers'
set @where= ' Where Country=''USA'' '
set @acmd=@select+@from+@where
exec sp_executeSql @acmd
此外,您需要将整个脚本作为一个块执行 - 而不仅仅是最后一行。您在帖子中描述的错误只会在您自己运行最后一行时引起。该脚本需要完整运行。
答案 1 :(得分:0)
如果执行脚本,则SELECT语句应为
Select * from Customers from CustomersWhere Country='USA
而不是使用下面的脚本,
declare @select nvarchar(100),@from nvarchar(50),@where nvarchar(50),@acmd nvarchar(150)
set @select='Select * '
set @from=' from Customers'
set @where= ' Where Country=''USA'''
set @acmd=@select+@from+@where
print @acmd
exec sp_executeSql @acmd