Share via


sp_stored_procedures (Transact-SQL)

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

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_stored_procedures [ [ @sp_name = ] 'name' ] 
    [ , [ @sp_owner = ] 'schema'] 
    [ , [ @sp_qualifier = ] 'qualifier' ]
    [ , [@fUsePattern = ] 'fUsePattern' ]

引数

  • [ @sp_name = ] 'name'
    カタログ情報を返すために使用するプロシージャの名前を指定します。name のデータ型は nvarchar(390) で、既定値は NULL です。ワイルドカードによるパターン照合がサポートされています。

  • [ @sp_owner = ] 'schema'
    プロシージャが所属するスキーマの名前を指定します。schema のデータ型は nvarchar(384) で、既定値は NULL です。ワイルドカードによるパターン照合がサポートされています。owner を指定しない場合は、基になる DBMS の既定のプロシージャ可視性規則が適用されます。

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

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

    • バッチまたは動的 SQL で実行された場合は、呼び出し側の既定のスキーマ。修飾名なしのプロシージャ名が別のプロシージャ定義内にある場合は、そのプロシージャを含むスキーマが次に検索されます。既定のスキーマの詳細については、「ユーザーとスキーマの分離」を参照してください。

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

  • [ @qualifier = ] 'qualifier'
    プロシージャ修飾子の名前を指定します。qualifier のデータ型は sysname で、既定値は NULL です。3 つの要素で構成されるテーブル名 (qualifier**.schema.**name) は、多くの DBMS 製品で使用できます。SQL Server では、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-92 標準のパターン照合 (パーセント (%) とアンダースコア (_) ワイルドカード文字) のみを前提としています。

特定のストアド プロシージャに対する、現在のユーザーの実行アクセスについての権限情報は必ずしもチェックされないため、アクセスは保証されません。また、3 つの要素で構成される名前だけが使用されることに注意してください。つまり、SQL Server に対して実行した場合、4 つの要素で構成される名前を必要とするリモート ストアド プロシージャではなく、ローカル ストアド プロシージャだけが返されます。sp_server_info の結果セットで、サーバー属性 ACCESSIBLE_SPROC が Y となっている場合は、現在のユーザーが実行できるストアド プロシージャだけが返されます。

sp_stored_procedures は ODBC の SQLProcedures に相当します。返される結果は、PROCEDURE_QUALIFIERPROCEDURE_OWNER、および PROCEDURE_NAME の順序に従って並べ替えられます。

権限

スキーマに対する SELECT 権限が必要です。

A. 現在のデータベース内のすべてのストアド プロシージャを返す

次の例では、AdventureWorks2008R2 データベース内のすべてのストアド プロシージャを返します。

USE AdventureWorks2008R2;
GO
EXECUTE sp_stored_procedures;

B. 1 つのストアド プロシージャを返す

次の例では、uspLogError ストアド プロシージャの結果セットを返します。

USE AdventureWorks2008R2;
GO
EXECUTE sp_stored_procedures N'uspLogError', N'dbo', N'AdventureWorks2008R2', 1;