Microsoft SQL Server 2012中的存储过程中的SQL查询错误

时间:2017-06-01 15:22:35

标签: sql sql-server stored-procedures

我收到此错误:

  

关键字'set'附近的语法不正确。

以下是代码段

'Update ' + @TableName +' set status='+str(@status)+ ' where id in (Select Sid from '+@tname+' where SiteId=' + str(@SiteId) + ' and OtId = '+str(@OtId) + ' and (coalesce(VID,'''')='''' OR VID = ''' + @VID +'''))'

1 个答案:

答案 0 :(得分:0)

您可能会使用STR()函数获得前导空格而不指定长度,这会导致错误。例如,select str(1)会返回1,其中包含9个填充空格。

可能发生的事情是@status是> 10.在这种情况下,它将被截断为****。例如,select str(12345678910)会返回***

所以,不要使用STR()。使用CAST()CONVERT()。当然这可能不是你唯一的问题,但我怀疑它是基于你提供的。我会阅读这些评论,因为我同意您没有提供足够的信息来调试此代码。密切关注@ Back的评论并在下次使用PRINT(@yourQuery)

MSDN on STR()

  

指定的长度应大于或等于   小数点前的数字加上数字符号(如果有的话)。一个   short float_expression在指定的长度内右对齐,并且   long float_expression被截断为指定的数量   小数位。例如,STR(12,10)得到12的结果   在结果集中右对齐。但是,STR(1223,2)会截断   结果设置为**。