次の方法で共有


sp_stored_procedures (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure 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_namenvarchar(390) で、既定値は NULL です。 ワイルドカードのパターン マッチングがサポートされています。

[ @sp_owner = ] N'sp_owner'

プロシージャが属するスキーマの名前を指定します。 @sp_ownernvarchar(384) で、既定値は NULL です。 ワイルドカードのパターン マッチングがサポートされています。 @sp_ownerが指定されていない場合は、基になるデータベース管理システム (DBMS) の既定のプロシージャ可視性ルールが適用されます。

SQL Server では、現在のスキーマに指定した名前のプロシージャが含まれている場合、そのプロシージャが返されます。 非修飾ストアド プロシージャが指定されている場合、データベース エンジンは次の順序でプロシージャを検索します。

  • 現在のデータベースの sys スキーマ。

  • バッチまたは動的 SQL で実行される場合の呼び出し元の既定のスキーマ。または、修飾されていないプロシージャ名が別のプロシージャ定義の本文内に表示される場合は、この他のプロシージャを含むスキーマが次に検索されます。

  • 現在のデータベースの dbo スキーマ。

[ @sp_qualifier = ] N'sp_qualifier'

プロシージャ修飾子の名前。 @sp_qualifiersysname で、既定値は NULL です。 さまざまな DBMS 製品では、 <qualifier>.<schema>.<name>形式のテーブルの 3 部構成の名前付けがサポートされています。 SQL Server では、 @sp_qualifier はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。

[ @fUsePattern = ] fUsePattern

アンダースコア (_)、パーセント (%)、または角かっこ ([]) をワイルドカード文字として解釈するかどうかを指定します。 @fUsePatternbit で、既定値は 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_QUALIFIERPROCEDURE_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;