我们的代码库中有很多 SQL 脚本,它们生成动态 SQL 语句,我们使用
对数据库执行这些语句EXEC (@FINALSQL)
是这样声明的
DECLARE @FINALSQL NVARCHAR(MAX);
在我们的一个脚本中,我们现在在执行动态 SQL 时出现错误:
<块引用>错误编号:2812
错误严重性:16
错误状态:62
错误消息:找不到存储过程
带有以下 SQL 语句。
错误编号与错误消息有关,但仍然找不到有关如何解决此问题的任何相关问题。
我也读过这个问题,但没有帮助,因为我已经将动态 SQL 括在括号中 calling EXEC() generates error: could not find stored procedure
任何可能导致问题的想法?
更新:@FINALSQL
的用途是根据脚本中的条件为表上的金额创建更新。
答案 0 :(得分:2)
几乎所有动态的答案都可以在 Erland Sommarskog 的文章中找到 巡回演出。
http://www.sommarskog.se/dynamic_sql.html
“Execute”对于执行存储过程时批处理中的第一条语句是可选的。字符串中可能存在一些格式错误,解析器尝试将第一个单词解释为过程名称,否则解析失败。
如果您无法选择捕获字符串,则使用扩展事件会话或跟踪来捕获错误查询。
如果这是一个真正的过程,那么我怀疑当前的数据库是错误的。一个“使用我的数据库;”因为字符串中的第一件事会解决这个问题。但你说事实并非如此。此外,错误消息中未列出过程名称。