sp_stored_procedures (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

返回当前环境中的存储过程列表。

Transact-SQL 语法约定

语法

sp_stored_procedures
    [ [ @sp_name = ] N'sp_name' ]
    [ , [ @sp_owner = ] N'sp_owner' ]
    [ , [ @sp_qualifier = ] N'sp_qualifier' ]
    [ , [ @fUsePattern = ] fUsePattern ]
[ ; ]

参数

[ @sp_name = ] N'sp_name'

用于返回目录信息的过程的名称。 @sp_name为 nvarchar(390),默认值为 NULL. 支持通配符模式匹配。

[ @sp_owner = ] N'sp_owner'

过程所属架构的名称。 @sp_owner为 nvarchar(384),默认值为 NULL. 支持通配符模式匹配。 如果未 指定@sp_owner ,则基础数据库管理系统(DBMS)的默认过程可见性规则适用。

在 SQL Server 中,如果当前架构包含具有指定名称的过程,则返回该过程。 如果指定了非限定存储过程,则数据库引擎按以下顺序搜索该过程:

  • sys 架构。

  • 调用方的默认架构(在使用批或动态 SQL 执行时);或者,如果非限定的过程名称出现在另一个过程定义的主体中,则接着搜索包含这一过程的架构。

  • 当前数据库中的 dbo 架构。

[ @sp_qualifier = ] N'sp_qualifier'

过程限定符的名称。 @sp_qualifier为 sysname,默认值为 NULL. 各种 DBMS 产品支持窗体 <qualifier>.<schema>.<name>中表的三部分命名。 在 SQL Server 中, @sp_qualifier 表示数据库名称。 在某些产品中,它表示表所在数据库环境的服务器名称。

[ @fUsePattern = ] fUsePattern

确定下划线()、百分比%_)还是括号([])被解释为野生字符卡字符。 @fUsePattern,默认值为 1.

  • 0 = 模式匹配已关闭。
  • 1 = 模式匹配已打开。

返回代码值

无。

结果集

列名称 数据类型 描述
PROCEDURE_QUALIFIER sysname 过程限定符名称。 此列可以是 NULL
PROCEDURE_OWNER sysname 过程所有者名称。 该列始终返回值。
PROCEDURE_NAME nvarchar(134) 过程名。 该列始终返回值。
NUM_INPUT_PARAMS int 保留供将来使用。
NUM_OUTPUT_PARAMS int 保留供将来使用。
NUM_RESULT_SETS int 保留供将来使用。
REMARKS varchar(254) 对过程的说明。 SQL Server 不返回此列的值。
PROCEDURE_TYPE smallint 过程类型。 SQL Server 始终返回 2.0。 此值可以是下列选项之一:

0 = SQL_PT_UNKNOWN
1 = SQL_PT_PROCEDURE
2 = SQL_PT_FUNCTION

注解

为了获得最大的互操作性,网关客户端应只假定 SQL 标准模式匹配,即百分比(%)和下划线(_)野生卡字符。

有关为当前用户执行对特定存储过程的访问权限的权限信息不一定检查;因此,不保证访问。 仅使用三部分命名。 这意味着,在针对 SQL Server 执行本地存储过程时,将只返回本地存储过程(而不是需要四部分命名的远程存储过程)。 如果服务器属性 ACCESSIBLE_SPROC 在结果集中 sp_server_info为 Y,则仅返回当前用户可执行的存储过程。

sp_stored_procedures 等效于 SQLProcedures ODBC。 返回的结果按 PROCEDURE_QUALIFIERPROCEDURE_OWNER以及 PROCEDURE_NAME

权限

需要对架构的 SELECT 权限。

示例

A. 返回当前数据库中的所有存储过程

以下示例返回 AdventureWorks2022 数据库中的所有存储过程。

USE AdventureWorks2022;
GO
EXEC sp_stored_procedures;

B. 返回单个存储过程

以下示例返回 uspLogError 存储过程的结果集。

USE AdventureWorks2022;
GO

sp_stored_procedures N'uspLogError',
    N'dbo',
    N'AdventureWorks2022',
    1;