存储过程部分代码如下,各变量的定义略。set @sql=N'select @ID=id from article where (audit=0 or audit=1) and classid=@CLASSID and @vRESULT' exec sp_executesql @sql,N'@ID int out,@CLASSID int,@vRESULT varchar(2000)',@ID out,@CLASSID,@vRESULT@vRESULT是从另外一个存储过程返回的值,为一个标准的SQL条件,然后拼接在@sql中,但是存储过程执行后报错,报错信息为:“服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '@vRESULT' 附近有语法错误。”
请问究竟如何解决,谢谢
第 1 行: '@vRESULT' 附近有语法错误。”
请问究竟如何解决,谢谢
改成
@ID int output,
exec sp_executesql @sql,N'@ID int out,@CLASSID int,@vRESULT varchar(2000)',@ID output,@CLASSID,@vRESULT写成这样也报语法错误,@vRESULT这个值里面是带有引号的条件,如A IN ('B','C')
set @sql=N'select @ID=id from article where (audit=0 or audit=1) and classid=@CLASSID and '+ convert(varchar(2000),@vRESULT)
或者
set @sql=N'select @ID=id from article where (audit=0 or audit=1) and classid=@CLASSID and 'SET @sql=@sql+convert(varchar(2000),@vRESULT)这样看的更清楚点
@classid也是变量,不能放在字符串里
set @sql=N'select @ID=id from article where (audit=0 or audit=1) and classid= '+ cast(@CLASSID as nvarchar(100))+' and '+convert(varchar(2000),@vRESULT)