2014-10-06 191 views
2

执行存储过程: Exec [usp_SummaryReport] 77,1,'[Name]','2014-10-06 11:45:21.170','2014- 10-06 11:45:21.170',[Name] 我得到这个错误
' - '附近语法不正确SQL中' - '语法不正确

谢谢大家。我纠正了它。这是价值传递的问题。

+1

''[Name]'似乎不正确... – 2014-10-06 07:16:28

+4

发布的'exec'语句没有错。我会说这个错误是由'usp_SummaryReport'的定义中的某处引起的,因为传递给它的值很可能在某种'sp_executesql'调用中使用。 – md4 2014-10-06 07:20:17

+0

是的 - 它在查询中。现在日期的问题可能会被处理并解析为字符串。 – 2014-10-06 07:21:28

回答

0

您的过程通过连接它的部分动态地构建SQL。

如果您没有这种语法错误,您将不会得到这种类型的语法错误,因为该过程在创建时进行了语法检查。剩下的唯一可能是程序自己创建一些SQL并尝试执行它。

这个动态构建的SQL是给你这个错误的原因。没有看到实际的代码,我们不可能说为什么这个SQL给你这个错误。


最有可能你试图通过直接串联的日期到SQL,而不是使用参数容易受到SQL注入,但我们没有这方面的证据。

1

如上所示,请确认您是否动态创建sqlscript,然后执行?.如果是,那么在执行脚本之前解决这个问题就是附加这个代码。

...... statement 
    print @query 
    EXEC sp_executesql @query 
.... 

在SSMS中,在消息窗口中,您可以获得准确的查询问题。您可以复制并过去新的查询窗口,修改它,最后在主sp的sql脚本中进行替换。