DROP PROCEDURE (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库

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

Transact-SQL 语法约定

语法

SQL Server、Azure SQL 托管实例和Azure SQL 数据库的语法:

DROP { PROC | PROCEDURE } [ IF EXISTS ] { [ schema_name. ] procedure } [ , ...n ]

Azure Synapse Analytics、Analytics Platform System (PDW) 和 Microsoft Fabric 的语法:

DROP { PROC | PROCEDURE } { [ schema_name. ] procedure_name }

参数

IF EXISTS

适用于:SQL Server 2016(13.x)及更高版本、Azure SQL 托管实例和Azure SQL 数据库

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

schema_name

过程所属架构的名称。 无法指定服务器名称或数据库名称。

procedure

要删除的存储过程或存储过程组的名称。 无法删除编号过程组中的各个过程;删除整个过程组。

最佳做法

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

元数据

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

权限

CONTROL要求对过程具有权限,或对过程所属的架构具有权限,或ALTERdb_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