日期:2014-05-17  浏览次数:20628 次

SQL 关于exec问题
本帖最后由 tc4343 于 2013-06-04 15:50:57 编辑

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+')');