DROP PROCEDURE (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

从 SQL Server 的当前数据库中删除一个或多个存储过程或过程组。

Transact-SQL 语法约定

语法

-- Syntax for SQL Server and Azure SQL Database  
  
DROP { PROC | PROCEDURE } [ IF EXISTS ] { [ schema_name. ] procedure } [ ,...n ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
DROP { PROC | PROCEDURE } { [ schema_name. ] procedure_name }  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

自变量

IF EXISTS
适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)。

有条件地删除过程(仅当其已存在时)。

schema_name
过程所属架构的名称。 不能指定服务器名称或数据库名称。

procedure
要删除的存储过程或存储过程组的名称。 不能删除编号过程组内的单个过程;但可删除整个过程组。

最佳实践

在删除任何存储过程之前,请检查依赖对象,并且相应地修改这些对象。 如果没有更新这些对象,则删除存储过程可能会导致依赖对象和脚本失败。 有关详细信息,请参阅查看存储过程的依赖关系

Metadata

若要显示现有过程的列表,请查询 sys.objects 目录视图。 若要显示过程定义,请查询 sys.sql_modules 目录视图

安全性

权限

需要拥有该过程的 CONTROL 权限,或该过程所属架构的 ALTER 权限,或 db_ddladmin 固定服务器角色的成员身份

示例

下面的示例将删除当前数据库中的 dbo.uspMyProc 存储过程。

DROP PROCEDURE dbo.uspMyProc;  
GO  

下面的示例将删除当前数据库中的多个存储过程。

DROP PROCEDURE dbo.uspGetSalesbyMonth, dbo.uspUpdateSalesQuotes, dbo.uspGetSalesByYear;  

以下示例删除 dbo.uspMyProc 存储过程(如果存在),但不会在该过程不存在时引发错误。 此语法是 SQL Server 2016 (13.x) 中的新语法。

DROP PROCEDURE IF EXISTS dbo.uspMyProc;  
GO  

另请参阅

ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
sys.objects (Transact-SQL)
sys.sql_modules (Transact-SQL)
删除存储过程