Sql声明局部变量?

时间:2015-01-30 11:15:50

标签: sql sql-server

这是我的疑问:

它要求我声明标量变量@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

2 个答案:

答案 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