相关疑难解决方法(0)

如何在创建存储过程之前检查存储过程是否存在

我有一个SQL脚本,每次客户端执行"数据库管理"功能时都必须运行该脚本.该脚本包括在客户端数据库上创建存储过程.其中一些客户端在运行脚本时可能已经有了存储过程,有些可能没有.我需要将缺少的存储过程添加到客户端数据库中,但是我尝试弯曲T-SQL语法并不重要,我得到了

CREATE/ALTER PROCEDURE'必须是查询批处理中的第一个语句

在创作作品之前我已经读到了它,但我不喜欢这样做.

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'MyProc')
DROP PROCEDURE MyProc
GO

CREATE PROCEDURE MyProc
...
Run Code Online (Sandbox Code Playgroud)

如何添加检查存储过程是否存在并创建它(如果它不存在)但如果存在则更改它?

sql t-sql sql-server stored-procedures

266
推荐指数
10
解决办法
50万
查看次数

你在SQL Server中做什么来创建或改变?

这一年是2009年,SQL Server没有CREATE或ALTER/REPLACE.这就是我所做的.

IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.ROUTINES 
           WHERE ROUTINE_NAME = 'SynchronizeRemoteCatalog' 
             AND ROUTINE_SCHEMA = 'dbo' 
             AND ROUTINE_TYPE = 'PROCEDURE')
 EXEC ('DROP PROCEDURE dbo.SynchronizeRemoteCatalog')

CREATE PROCEDURE dbo.SynchronizeRemoteCatalog
AS BEGIN
    -- body
END
Run Code Online (Sandbox Code Playgroud)

对于触发器,您必须依赖于专有系统视图.

在此期间,这是最受欢迎的惯例吗?

编辑:正如n8wrl建议的那样,官方消息表明此功能不是高优先级.因此问题.

sql t-sql sql-server

61
推荐指数
5
解决办法
6万
查看次数

标签 统计

sql ×2

sql-server ×2

t-sql ×2

stored-procedures ×1