sp_stored_procedures (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance

Returns a list of stored procedures in the current environment.

Transact-SQL syntax conventions

Syntax

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

Arguments

[ @sp_name = ] N'sp_name'

The name of the procedure used to return catalog information. @sp_name is nvarchar(390), with a default of NULL. Wildcard pattern matching is supported.

[ @sp_owner = ] N'sp_owner'

The name of the schema to which the procedure belongs. @sp_owner is nvarchar(384), with a default of NULL. Wildcard pattern matching is supported. If @sp_owner isn't specified, the default procedure visibility rules of the underlying database management system (DBMS) apply.

In SQL Server, if the current schema contains a procedure with the specified name, that procedure is returned. If a nonqualified stored procedure is specified, the Database Engine searches for the procedure in the following order:

  • The sys schema of the current database.

  • The caller's default schema if executed in a batch or in dynamic SQL; or, if the non-qualified procedure name appears inside the body of another procedure definition, the schema containing this other procedure is searched next.

  • The dbo schema in the current database.

[ @sp_qualifier = ] N'sp_qualifier'

The name of the procedure qualifier. @sp_qualifier is sysname, with a default of NULL. Various DBMS products support three-part naming for tables in the form <qualifier>.<schema>.<name>. In SQL Server, @sp_qualifier represents the database name. In some products, it represents the server name of the database environment of the table.

[ @fUsePattern = ] fUsePattern

Determines whether the underscore (_), percent (%), or brackets ([ and ]) are interpreted as wildcard characters. @fUsePattern is bit, with a default of 1.

  • 0 = Pattern matching is off.
  • 1 = Pattern matching is on.

Return code values

None.

Result set

Column name Data type Description
PROCEDURE_QUALIFIER sysname Procedure qualifier name. This column can be NULL.
PROCEDURE_OWNER sysname Procedure owner name. This column always returns a value.
PROCEDURE_NAME nvarchar(134) Procedure name. This column always returns a value.
NUM_INPUT_PARAMS int Reserved for future use.
NUM_OUTPUT_PARAMS int Reserved for future use.
NUM_RESULT_SETS int Reserved for future use.
REMARKS varchar(254) Description of the procedure. SQL Server doesn't return a value for this column.
PROCEDURE_TYPE smallint Procedure type. SQL Server always returns 2.0. This value can be one of the following options:

0 = SQL_PT_UNKNOWN
1 = SQL_PT_PROCEDURE
2 = SQL_PT_FUNCTION

Remarks

For maximum interoperability, the gateway client should assume only SQL standard pattern matching, namely the percent (%) and underscore (_) wildcard characters.

The permission information about execute access to a specific stored procedure for the current user isn't necessarily checked; therefore, access isn't guaranteed. Only three-part naming is used. This means that only local stored procedures, not remote stored procedures (which require four-part naming), are returned when they're executed against SQL Server. If the server attribute ACCESSIBLE_SPROC is Y in the result set for sp_server_info, only stored procedures that can be executed by the current user are returned.

sp_stored_procedures is equivalent to SQLProcedures in ODBC. The results returned are ordered by PROCEDURE_QUALIFIER, PROCEDURE_OWNER, and PROCEDURE_NAME.

Permissions

Requires SELECT permission on the schema.

Examples

A. Return all stored procedures in the current database

The following example returns all stored procedures in the AdventureWorks2022 database.

USE AdventureWorks2022;
GO
EXEC sp_stored_procedures;

B. Return a single stored procedure

The following example returns a result set for the uspLogError stored procedure.

USE AdventureWorks2022;
GO

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