適用対象:SQL Server
指定したリンク サーバー テーブルに対し、1 列あたり 1 行の列情報を返します。
sp_columns_ex は、 @column_name が指定されている場合、特定の列についてのみ列情報を返します。
構文
sp_columns_ex
[ @table_server = ] N'table_server'
[ , [ @table_name = ] N'table_name' ]
[ , [ @table_schema = ] N'table_schema' ]
[ , [ @table_catalog = ] N'table_catalog' ]
[ , [ @column_name = ] N'column_name' ]
[ , [ @ODBCVer = ] ODBCVer ]
[ ; ]
引数
[ @table_server = ] N'table_server'
列情報を返すリンク サーバーの名前。 @table_server は sysname で、既定値はありません。
[ @table_name = ] N'table_name'
列情報を返すテーブルの名前。
@table_name は sysname で、既定値は NULL です。
[ @table_schema = ] N'table_schema
列情報を返すテーブルのスキーマ名。
@table_schema は sysname で、既定値は NULL です。
[ @table_catalog = ] N'table_catalog
列情報を返すテーブルのカタログ名。
@table_catalog は sysname で、既定値は NULL です。
[ @column_name = ] N'column_name
情報を提供するデータベース列の名前。
@column_name は sysname で、既定値は NULL です。
[ @ODBCVer = ] ODBCVer
使用されている ODBC のバージョン。
@ODBCVer は int で、既定値は 2 です。 これは ODBC バージョン 2 を示します。 有効な値は 2 または 3です。 バージョン 2 と 3 の動作の違いについては、ODBC SQLColumns 仕様を参照してください。
リターン コードの値
なし。
結果セット
| 列名 | データ型 | 説明 |
|---|---|---|
TABLE_CAT |
sysname | テーブルまたはビュー修飾子の名前。 さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (<qualifier>.<owner>.<name>) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。 このフィールドは NULLできます。 |
TABLE_SCHEM |
sysname | テーブルまたはビュー所有者の名前。 SQL Server では、この列はテーブルを作成したデータベース ユーザーの名前を表します。 このフィールドには常に値が返されます。 |
TABLE_NAME |
sysname | テーブルまたはビューの名前。 このフィールドには常に値が返されます。 |
COLUMN_NAME |
sysname | 返される TABLE_NAME の各列の列名。 このフィールドには常に値が返されます。 |
DATA_TYPE |
smallint | ODBC 型インジケーターに対応する int 値。 ODBC 型にマップできないデータ型の場合、この値は NULL。 ネイティブ データ型名は、 TYPE_NAME 列に返されます。 |
TYPE_NAME |
varchar(13) | データ型を表す文字列。 このデータ型名は、基になる DBMS で提供されます。 |
COLUMN_SIZE |
int | 有効桁数。
PRECISION列の戻り値は 10 進数です。 |
BUFFER_LENGTH |
int | データの転送サイズ。1 |
DECIMAL_DIGITS |
smallint | 小数点以下の桁数。 |
NUM_PREC_RADIX |
smallint | 数値データ型の基数です。 |
NULLABLE |
smallint | NULL 値の許容を示します。1
=
NULL が可能です。0
=
NOT NULL. |
REMARKS |
varchar(254) | このフィールドは常に NULLを返します。 |
COLUMN_DEF |
varchar(254) | 列の既定値です。 |
SQL_DATA_TYPE |
smallint | 記述子の TYPE フィールドに表示される SQL データ型の値。 この列は、DATA_TYPE および SQL-92 interval データ型を除き、列と同じです。 この列は常に値が返されます。 |
SQL_DATETIME_SUB |
smallint |
datetime および SQL-92 の interval データ型のサブタイプ コード。 その他のデータ型の場合、この列は NULLを返します。 |
CHAR_OCTET_LENGTH |
int | 文字型または整数型の列の最大長 (バイト単位)。 その他のすべてのデータ型の場合、この列は NULLを返します。 |
ORDINAL_POSITION |
int | テーブル内の列の序数位置。 テーブルの最初の列は 1 です。 この列は常に値が返されます。 |
IS_NULLABLE |
varchar(254) | テーブル内の列の NULL 値の許容。 ISO の規則に従って、NULL 値の許容が判断されます。 ISO SQL 準拠の DBMS は空の文字列を返すことはできません。YES = 列には NULLを含めることができます。NO = 列に NULLを含めることはできません。NULL 値の許容が不明な場合、この列は長さ 0 の文字列になります。 この列に対して返される値は、 NULLABLE 列に対して返される値とは異なります。 |
SS_DATA_TYPE |
tinyint | 拡張ストアド プロシージャで使用される SQL Server データ型。 |
詳細については、「 ODBC の概要を参照してください。
解説
sp_columns_exは、COLUMNSに対応する OLE DB プロバイダーのIDBSchemaRowsetインターフェイスの行セットに対してクエリを実行することによって実行されます。 @table_name、@table_schema、@table_catalog、および@column_nameパラメーターがこのインターフェイスに渡され、返される行が制限されます。sp_columns_ex指定したリンク サーバーの OLE DB プロバイダーが、COLUMNSインターフェイスのIDBSchemaRowset行セットをサポートしていない場合は、空の結果セットが返されます。sp_columns_exは、区切り記号付き識別子の要件に従います。 詳細については、「 Database 識別子」を参照してください。
アクセス許可
スキーマに対する SELECT アクセス許可が必要です。
例
次の例では、リンク サーバー JobTitle 上の HumanResources.Employee データベースにある、AdventureWorks2025 テーブルの Seattle1 列のデータ型を返します。
EXECUTE sp_columns_ex 'Seattle1',
'Employee',
'HumanResources',
'AdventureWorks2022',
'JobTitle';