Stored procedures SQL Server 2000中删除存储过程的语法是什么?

Stored procedures SQL Server 2000中删除存储过程的语法是什么?,stored-procedures,sql-server-2000,sql-drop,Stored Procedures,Sql Server 2000,Sql Drop,简单的问题,如标题所示: 在SQL Server 2000中,通过首先检查SP是否存在来删除存储过程SP的语法是什么 请提供完整的代码。如下: IF EXISTS (SELECT name FROM sysobjects WHERE name = 'my_procedure' AND type = 'P') DROP PROCEDURE my_procedure GO 希望有帮助 Microsoft建议使用object_id函数,如下所示: IF EXISTS (select * from d

简单的问题,如标题所示:

在SQL Server 2000中,通过首先检查SP是否存在来删除存储过程SP的语法是什么

请提供完整的代码。

如下:

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'my_procedure' AND type = 'P')
DROP PROCEDURE my_procedure GO

希望有帮助

Microsoft建议使用object_id函数,如下所示:

IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[YourProcedure]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[YourProcedure]
GO
。 对象id有助于解决所有者冲突。如果你这样做 从sysobjects中选择name,其中name='my_procedure' ,您可能会看到许多具有相同名称的不同过程-所有这些过程都针对不同的所有者

但是,从sysobjects中选择*,其中id=object\u idN“[my\u procedure]”将仅显示当前所有者/用户的进程(如果存在多个同名的进程)


不过,始终指定对象所有者默认值为dbo。这不仅可以避免令人讨厌的副作用,而且速度更快。

一种稍微简单的方法,无需查看系统表:

IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
GO
在SQL SERVER 2008中,如果要删除存储过程,只需编写以下命令

DROP PROC Procedure_name
DROP PROC dbo.spInsertUser

希望对您有所帮助。

不适用于SQL Server 2000,但从SQL Server 2016开始,您可以使用IF EXISTS语法:

DROP PROCEDURE IF EXISTS [sp_ProcName]

如果要删除多个过程,可以执行以下操作。 注意:此语法适用于SQL Server 2016及更高版本

USE [Database_name]
GO

BEGIN 
DROP PROCEDURE IF EXISTS    'my_procedure1',
                            'my_procedure2',
                            'my_procedure3',
                            'my_procedure4',
                            'my_procedure5',
END
    

我使用的是MS SQL 2012,这个语法对我来说很有用,DROP过程[dbo]。[YourProcedure]这应该是最重要的答案;OP在十年前得到了他的解决方案,现在这是正确的。大多数阅读本文的人不需要笨重的SQLServer2000解决方案。