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')
但我收到了错误。
我该怎么做?
我已经尝试了几个小时但却无法解决。
答案 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')