检查是否存在存储过程

时间:2014-07-16 14:42:52

标签: sql stored-procedures sql-server-2012

是否有任何正文知道为什么以下SQL在SQL Server 2012中返回语法错误(语法附近的错误语法' IF')?

DROP PROCEDURE IF EXISTS MyStoredProcedure;

我知道我可以使用以下代码:

IF EXISTS(SELECT 1 FROM sys.procedures 
      WHERE Name = 'MyStoredProcedure')

但我想知道为什么第一个产生错误。

谢谢!

1 个答案:

答案 0 :(得分:0)

这有效:

IF EXISTS(SELECT 1 FROM sys.procedures 
      WHERE Name = 'MyStoredProcedure')
      print 'yes'
      -- drop procedure mystoredprocedure

您的查询窗口中必须有其他内容正在抛出错误,或者您按错误的顺序运行。

对于它的价值,这是我在我CREATE PROCEDURE之前删除/构建程序的“去”...所有我保存的proc脚本都有这个。

IF OBJECT_ID('dbo.uspSomeProcName') IS NOT NULL
BEGIN
    DROP PROCEDURE dbo.uspSomeProcName
    IF OBJECT_ID('dbo.uspSomeProcName') IS NOT NULL
        PRINT '<<< FAILED DROPPING PROCEDURE dbo.uspSomeProcName>>>'
    ELSE
        PRINT '<<< DROPPED PROCEDURE dbo.uspSomeProcName>>>'
END