首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 关于exec有关问题

2013-07-01 
SQL 关于exec问题本帖最后由 tc4343 于 2013-06-04 15:50:57 编辑declare @productIds varchar(100),@usdi

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

热点排行