我可以在 Visual Studio 数据库项目存储过程中使用 SQLCMD 命令吗?

Can I use SQLCMD Commands in Visual Studio Database Project Stored Procedure?

我有很多 SQL 在多个存储过程中是相同的。

例如,大多数过程都声明了相同的变量,并且在同一个 try catch 块中处理错误。

我想使用 :r 命令,这样我就可以将这段代码写在一个文件中,然后将其导入到每个 sp 中。我可以在预构建脚本和 post 构建脚本中使用该命令,但我无法在普通 'Build' 类型的数据库对象中使用它。

示例:

SQL \Shared\CommonVariables:

[p_An_Example]内:

错误只是说 "SQL46010: Incorrect Syntax near \."

-

如果我将路径用引号引起来,错误将被替换为 'BEGIN':

"SQL46010: Incorrect Syntax near BEGIN."

-

我能做些什么来让它工作吗?目前 [p_An_Example] 具有 Build 生成操作 属性,并且 \Shared\CommonVariables 设置为 None

(我正在使用 Visual Studio 2017,数据库项目指向 2008 数据库,已安装 SQLCMD 等)

编辑:不是重复,因为我确实开启了 SQLCMD 模式...但结果是 SQLCMD 命令在存储过程语句中不可用

是的,选项在SQL -> 执行设置 -> SQLCMD 模式:

但是请注意,您不能在 SP 中包含 sqlcmd 代码,因为 DBMS 无法解释代码,它纯粹用于编码环境;例如 SSMS/VS.

Visual Studio 2019 中,您可以通过使用 SQLCMD 语句打开文件来执行相同的操作,然后单击新视图中的最后一个图标以使错误消失: