sp_stored_procedures (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
現在の環境内にあるストアド プロシージャの一覧を返します。
構文
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>
形式のテーブルの 3 部構成の名前付けがサポートされています。 SQL Server では、 @sp_qualifier はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。
[ @fUsePattern = ] fUsePattern
アンダースコア (_
)、パーセント (%
)、または角かっこ ([
と ]
) をワイルドカード文字として解釈するかどうかを指定します。 @fUsePattern は bit で、既定値は 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 標準パターン マッチング (パーセント (%
) とアンダースコア (_
) ワイルドカード文字のみを想定する必要があります。
現在のユーザーの特定のストアド プロシージャへの実行アクセスに関するアクセス許可情報が必ずしもチェックされるとは限りません。そのため、アクセスは保証されません。 3 部構成の名前付けのみが使用されます。 つまり、SQL Server に対して実行すると、リモート ストアド プロシージャ (4 部構成の名前付けが必要) ではなく、ローカル ストアド プロシージャのみが返されます。 sp_server_info
の結果セットのサーバー属性ACCESSIBLE_SPROC
が Y の場合は、現在のユーザーが実行できるストアド プロシージャのみが返されます。
sp_stored_procedures
は ODBC の SQLProcedures
と同じです。 返される結果は、 PROCEDURE_QUALIFIER
、 PROCEDURE_OWNER
、および PROCEDURE_NAME
順に並べられます。
アクセス許可
スキーマに対する SELECT
アクセス許可が必要です。
例
A. 現在のデータベース内のすべてのストアド プロシージャを返す
次の例では、AdventureWorks2022 データベース内のすべてのストアド プロシージャを返します。
USE AdventureWorks2022;
GO
EXEC sp_stored_procedures;
B. 1 つのストアド プロシージャを返す
次の例では、 uspLogError
ストアド プロシージャの結果セットを返します。
USE AdventureWorks2022;
GO
sp_stored_procedures N'uspLogError',
N'dbo',
N'AdventureWorks2022',
1;