sp_stored_procedures (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

現在の環境内にあるストアド プロシージャの一覧を返します。

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>内のテーブルの 3 部構成の名前付けがサポートされています。 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 標準パターン マッチング (パーセント () 文字とアンダースコア (%_) ワイルド文字カード文字のみを想定する必要があります。

現在のユーザーの特定のストアド プロシージャへの実行アクセスに関するアクセス許可情報は必ずしもチェックされません。そのため、アクセスは保証されません。 3 部構成の名前付けのみが使用されます。 つまり、SQL Server に対して実行すると、リモート ストアド プロシージャ (4 部構成の名前付けが必要) ではなく、ローカル ストアド プロシージャのみが返されます。 サーバー属性 ACCESSIBLE_SPROC が結果セット sp_server_infoの 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;