declare @productIds varchar(100),
@usdid varchar(100),
@execstr nvarchar(100)
set @productIds='28,29,30'
set @usdid=convert(varchar(100),dbo.getUserID('tc'))
--@usdid是一个uniqueidentifier变量
select @usdid --执行成功,输出 'B4971D47-EDA9-4AFE-BB76-D71E5F95D54D'
exec('select ProductID,'+@usdid+' from Product where ProductID in('+@productIds+')');
--执行失败,显示'-' 附近有语法错误。
go
我想要的效果是输出三条product记录,例如 28 'B4971D47-EDA9-4AFE-BB76-D71E5F95D54D'
如果是直接select可以输出varchar变量,但是换成exec时varchar变量就成了某个表中未定义的字段名了,这点要怎么解决啊,因为ProductID 是bigint,所以 不得不用exec啊..求助高手
SQL
------解决方案--------------------
少俩引号..
exec ('select ProductID,'''+@usdid+''' from Product where ProductID in('+@productIds+')');
------解决方案--------------------
exec('select ProductID,'+@usdid+' from Product where ProductID in('''+@productIds+''')'); --注意单引号
------解决方案--------------------
exec('select ProductID,'''+@usdid+''' from Product where ProductID in('+@productIds+')');