在 MS SQL Server Management Studio 2005 中:
如果您将工具|选项|脚本|“包含 IF NOT EXISTS 子句”设置为 true,则修改存储过程将创建一个甚至无法正常工作的奇怪脚本。它看起来像下面这样:(省略号用于简洁)
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS [...]
BEGIN
EXEC dbo.sp_executesql @statement = N'
ALTER procedure [dbo].[p_Procedure]
[...]
'
END
这显然不起作用,因为调用 ALTER 语句的唯一方法是存储过程不存在。
因此问题是:有没有办法改变这个生成的代码?某个地方的模板(这似乎与模板工具中的构建无关)?
(对此行为的轻微解释:编写 CREATE 语句的脚本会生成相同的代码,其中 IF NOT EXISTS 更有意义)