通过execute语句将值存储在变量返回中

时间:2013-03-05 11:20:04

标签: asp.net sql sql-server

declare @value varchar(500)
declare @Whrcol varchar(500)
declare @Whrvalue varchar(500)
set @Whrcol='Product Cat3'
set @Whrvalue='IR DOME CAMERA'
set @value=('select [Table Name] 
             from tblProductsCatalog 
             where ['+ @Whrcol+ '] ='''+@Whrvalue+'''')
execute (@value)

我想通过Execute语句保存值返回,以便我可以在下一个语句中使用 即。

execute('select * from '+@value+ ' where IsActive =1')

但我收到了错误。

我该怎么做?

我已经尝试了几个小时但却无法解决。

2 个答案:

答案 0 :(得分:0)

尝试这种方式:

declare @value varchar(500)
declare @Whrcol varchar(500)
declare @Whrvalue varchar(500)
set @Whrcol='Product Cat3'
set @Whrvalue='IR DOME CAMERA'
execute('select @value = [Table Name] 
             from tblProductsCatalog 
             where ['+ @Whrcol+ '] ='''+@Whrvalue+'''')
execute('select * from '+@value+ ' where IsActive =1')

答案 1 :(得分:0)

使用sp_executesql。

请注意@value需要更改为nvarchar。我也分离了返回的值而不是覆盖@value变量。

declare @value nvarchar(500)
declare @Whrcol varchar(500)
declare @Whrvalue varchar(500)
declare @returnValue varchar(500)  

set @Whrcol='Product Cat3'
set @Whrvalue='IR DOME CAMERA'
set @value='select TOP 1 @returnValue = [Table Name] 
             from tblProductsCatalog 
             where ['+ @Whrcol+ '] ='''+@Whrvalue+''''
exec sp_executesql @value, N'@returnValue varchar(500) output', @returnValue output

execute('select * from '+@returnValue+ ' where IsActive =1')