SQL Serverでは、 sp_sproc_columns
システムストアドプロシージャを使用すると、現在のシステムの特定のストアドプロシージャまたはユーザー定義関数の列情報を取得できます。
これは、ODBCのSQLProcedureColumnsと同等です。
構文
構文は次のようになります:
sp_sproc_columns [[@procedure_name = ] 'name'] [ , [@procedure_owner = ] 'owner'] [ , [@procedure_qualifier = ] 'qualifier'] [ , [@column_name = ] 'column_name'] [ , [@ODBCVer = ] 'ODBCVer'] [ , [@fUsePattern = ] 'fUsePattern']
すべての引数はオプションです。これらの詳細な説明については、Microsoftのドキュメントを参照してください。
例1-引数を指定しない
引数を指定せずにストアドプロシージャを実行できます。このように:
EXEC sp_sproc_columns
またはこのように:
sp_sproc_columns
これにより、現在のデータベース内のすべてのストアドプロシージャとユーザー定義関数が返されます。 WideWorldImportersサンプルデータベースに対してこれを実行すると、9077行が取得されます。次の例では、1つに絞り込みます。
例2–すべての引数を指定する
すべての引数を含めると、次のようになります。
EXEC sp_sproc_columns @procedure_name = 'GetCityUpdates', @procedure_owner = 'Integration', @procedure_qualifier = 'WideWorldImporters', @column_name = '@RETURN_VALUE', @ODBCVer = 2, @fUsePattern = 1;
結果(垂直出力を使用):
PROCEDURE_QUALIFIER | WideWorldImporters PROCEDURE_OWNER | Integration PROCEDURE_NAME | GetCityUpdates;1 COLUMN_NAME | @RETURN_VALUE COLUMN_TYPE | 5 DATA_TYPE | 4 TYPE_NAME | int PRECISION | 10 LENGTH | 4 SCALE | 0 RADIX | 10 NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | 4 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | NULL ORDINAL_POSITION | 0 IS_NULLABLE | NO SS_DATA_TYPE | 56
この場合、 GetCityUpdates の戻り値に関する情報を返します。 ストアドプロシージャ。
例3–ストアドプロシージャ(または関数)のみを指定する
すべての引数を含めるのではなく、ストアドプロシージャの名前だけを含めることができます。ただし、 @column_name
を指定しない場合 、これを行うと、各列の行が返されます。
また、引数名を省略する(つまり、その値のみを含める)ことで、コードをより簡潔にすることができます。
EXEC sp_sproc_columns GetCityUpdates;
結果(垂直出力を使用):
-[ RECORD 1 ]------------------------- PROCEDURE_QUALIFIER | WideWorldImporters PROCEDURE_OWNER | Integration PROCEDURE_NAME | GetCityUpdates;1 COLUMN_NAME | @RETURN_VALUE COLUMN_TYPE | 5 DATA_TYPE | 4 TYPE_NAME | int PRECISION | 10 LENGTH | 4 SCALE | 0 RADIX | 10 NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | 4 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | NULL ORDINAL_POSITION | 0 IS_NULLABLE | NO SS_DATA_TYPE | 56 -[ RECORD 2 ]------------------------- PROCEDURE_QUALIFIER | WideWorldImporters PROCEDURE_OWNER | Integration PROCEDURE_NAME | GetCityUpdates;1 COLUMN_NAME | @LastCutoff COLUMN_TYPE | 1 DATA_TYPE | -9 TYPE_NAME | datetime2 PRECISION | 27 LENGTH | 54 SCALE | 7 RADIX | NULL NULLABLE | 1 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | 3 CHAR_OCTET_LENGTH | NULL ORDINAL_POSITION | 1 IS_NULLABLE | YES SS_DATA_TYPE | 0 -[ RECORD 3 ]------------------------- PROCEDURE_QUALIFIER | WideWorldImporters PROCEDURE_OWNER | Integration PROCEDURE_NAME | GetCityUpdates;1 COLUMN_NAME | @NewCutoff COLUMN_TYPE | 1 DATA_TYPE | -9 TYPE_NAME | datetime2 PRECISION | 27 LENGTH | 54 SCALE | 7 RADIX | NULL NULLABLE | 1 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | 3 CHAR_OCTET_LENGTH | NULL ORDINAL_POSITION | 2 IS_NULLABLE | YES SS_DATA_TYPE | 0
例4–その他のバリエーション
必要な情報だけを返すために、引数のバリエーションを提供できます。
たとえば、特定のプロシージャの所有者からすべての情報を返すことができます。
EXEC sp_sproc_columns @procedure_owner = 'Integration'
または、すべてのプロシージャとユーザー定義関数からすべての戻り値に関する情報を取得できます。
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE'
もちろん、必要に応じて、いつでもプロシージャ修飾子を含めることができます。 SQL Serverでは、このパラメーターはデータベース名を表します。一部の製品では、テーブルのデータベース環境のサーバー名を表します。
EXEC sp_sproc_columns @column_name = '@RETURN_VALUE', @procedure_qualifier = 'WideWorldImporters';
例5–ワイルドカード文字
@fUsePattern
引数を使用すると、アンダースコア( _
)を指定するかどうかを指定できます )、パーセント(%
)、およびブラケット( [
]コード> )文字はワイルドカード文字として解釈されます。
たとえば、次のコードを実行すると、 Get で始まるすべてのプロシージャとユーザー定義関数が返されます。 。
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 1;
したがって、私の場合、これはGetCityUpdates、GetCustomerUpdates、GetMovementUpdatesなどのプロシージャを返しました。
ワイルドカード文字を無効にした場合:
EXEC sp_sproc_columns @procedure_name = 'Get%', @fUsePattern = 0;
結果が出ません。