【发布时间】:2019-01-21 05:22:38
【问题描述】:
我在多个存储过程中有很多相同的 SQL。
例如,大多数过程都声明了相同的变量,并且在同一个 try catch 块中处理错误。
我想使用:r 命令,这样我就可以将这段代码写在一个文件中,然后将其导入每个sp。我可以在构建前和构建后脚本中使用该命令,但无法使其在正常的“构建”类型数据库对象中工作。
例子:
\Shared\CommonVariables内的SQL:
[p_An_Example]内:
错误只是说“SQL46010:\ 附近的语法不正确。”
-
如果我将路径用引号括起来,则错误将在“BEGIN”上替换为一个:
“SQL46010:BEGIN 附近的语法不正确。”
-
有什么我可以做的吗?目前[p_An_Example] 具有Build Build Action 属性,\Shared\CommonVariables 设置为None。
(我使用的是 Visual Studio 2017,数据库项目指向 2008 数据库,安装了 SQLCMD 等)
编辑:不是重复,因为我确实打开了 SQLCMD 模式...但事实证明 SQLCMD 命令在存储过程语句中不可用
【问题讨论】:
-
用于构建模型的 T-SQL 源代码可能包含 SQLCMD 变量,但不包含 SQLCMD 命令,例如
:r.. I'm not aware of a way to include files during the build process that become part of theCREATE PROCEDURE 语句。 -
@DanGuzman 是的,我已经检查过了,并且确实打开了 SQLCMD 模式,所以这一定是问题所在……这在 SP 中是不可能的。感谢您的确认
标签: sql-server visual-studio tsql sqlcmd database-project