在 SQL Server 2000 中删除存储过程的语法是啥?

Posted

技术标签:

【中文标题】在 SQL Server 2000 中删除存储过程的语法是啥?【英文标题】:What is the syntax to drop a Stored Procedure in SQL Server 2000?在 SQL Server 2000 中删除存储过程的语法是什么? 【发布时间】:2011-03-24 03:41:17 【问题描述】:

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

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

请提供完整代码。

【问题讨论】:

【参考方案1】:

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

.object_id() 帮助解决所有者冲突。如果你这样做SELECT name FROM sysobjects WHERE name = 'my_procedure' ,您可能会看到许多具有相同名称的不同程序 - 都针对不同的所有者。

但是,SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]') 只会向您显示当前所有者/用户的那个,前提是存在多个同名的过程。

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

【讨论】:

我使用的是 MS SQL 2012,这个语法对我有用 DROP PROCEDURE [dbo].[YourProcedure]【参考方案2】:

一种略简单的方法,无需进入系统表:

IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
GO

【讨论】:

【参考方案3】:

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

DROP PROCEDURE IF EXISTS [sp_ProcName]

【讨论】:

这应该是最佳答案; OP 十年前得到了他的解决方案,现在这是正确的解决方案。大多数阅读本文的人不需要笨重的 SQL Server 2000 解决方案。 这不是真的,这个问题专门要求2000年,有很多问题回答新版本。【参考方案4】:

像这样:

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

希望有帮助!

【讨论】:

【参考方案5】:

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

USE [Database_name]
GO

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

【讨论】:

【参考方案6】:

SQL SERVER 2008,如果你想删除一个存储过程,只需编写以下命令......

DROP PROC Procedure_name
DROP PROC dbo.spInsertUser

希望对你有帮助..

【讨论】:

以上是关于在 SQL Server 2000 中删除存储过程的语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2000 系统存储过程

SQL Server 2000:如何退出存储过程?

如何从 SQL Server 2000 调用 MySQL 存储过程?

用SQL创建存储过程的题目(SQL SERVER2000下)

如何使用 Hibernate con Sql Server 2000 调用存储过程?

怎样在Sql server中创建,执行和删除存储过程