sp_columns (Transact-SQL)
現在の環境で照会できる、指定されたオブジェクトの列情報を返します。
構文
sp_columns [ @table_name = ] object [ , [ @table_owner = ] owner ]
[ , [ @table_qualifier = ] qualifier ]
[ , [ @column_name = ] column ]
[ , [ @ODBCVer = ] ODBCVer ]
引数
[ @table_name=] object
カタログ情報を返すために使用するオブジェクトの名前を指定します。object には、テーブル、ビュー、または列を持つその他のオブジェクト (テーブル値関数など) を指定できます。object のデータ型は nvarchar(384) で、既定値はありません。ワイルドカードによるパターン照合がサポートされています。[ @table_owner=] owner
カタログ情報を返すために使用するオブジェクトの所有者を指定します。owner のデータ型は nvarchar(384) で、既定値は NULL です。ワイルドカードによるパターン照合がサポートされています。owner を指定しない場合は、基になる DBMS の既定のオブジェクト可視性規則が適用されます。指定した名前のオブジェクトを現在のユーザーが所有している場合は、そのオブジェクトの列が返されます。owner を指定せず、object で指定したオブジェクトを現在のユーザーが所有していない場合、sp_columns では、データベース所有者が所有する object のオブジェクトが検索されます。存在する場合は、そのオブジェクトの列が返されます。
[ @table_qualifier=] qualifier
オブジェクト修飾子の名前を指定します。qualifier のデータ型は sysname で、既定値は NULL です。さまざまな DBMS 製品で、3 つの要素で構成されたオブジェクト名を使用できます。(qualifier**.owner.**name)SQL Server では、この列はデータベース名を表します。製品によっては、オブジェクトのデータベース環境のサーバー名を表す場合があります。[ @column_name=] column
カタログ情報が 1 列だけ必要な場合に使用する 1 つの列を指定します。column のデータ型は nvarchar(384) で、既定値は NULL です。column を指定しない場合、すべての列が返されます。SQL Server では、column は syscolumns テーブルに表示される列名を表します。ワイルドカードによるパターン照合がサポートされています。相互運用可能性を最大にするため、ゲートウェイのクライアントは、SQL-92 標準のパターン照合 (% と _ ワイルドカード文字) のみを想定してください。[ @ODBCVer=] ODBCVer
使用する ODBC のバージョンを指定します。ODBCVer のデータ型は int で、既定値は 2 です。この既定値は ODBC Version 2 を示します。有効な値は 2 または 3 です。バージョン 2 と 3 の動作の相違については、ODBC の SQLColumns 仕様を参照してください。
リターン コードの値
なし
結果セット
sp_columns ストアド プロシージャ カタログは ODBC の SQLColumns に相当します。返される結果は、TABLE_QUALIFIER、TABLE_OWNER、TABLE_NAME の順序に従って並べ替えられます。
列名 |
データ型 |
説明 |
---|---|---|
TABLE_QUALIFIER |
sysname |
オブジェクト修飾子の名前です。このフィールドには NULL を指定できます。 |
TABLE_OWNER |
sysname |
オブジェクトの所有者の名前です。このフィールドは常に値を返します。 |
TABLE_NAME |
sysname |
オブジェクト名です。このフィールドは常に値を返します。 |
COLUMN_NAME |
sysname |
返される TABLE_NAME の各列の列名です。このフィールドは常に値を返します。 |
DATA_TYPE |
smallint |
ODBC データ型の整数コードです。ODBC のデータ型にマップできないデータ型の場合は、NULL になります。ネイティブ データ型の名前は TYPE_NAME 列に返されます。 |
TYPE_NAME |
sysname |
データ型を表す文字列です。基になる DBMS はこのデータ型の名前を提示します。 |
PRECISION |
int |
有効桁数です。PRECISION 列に返される値の基数は 10 です。 |
LENGTH |
int |
データの転送サイズです。1 |
SCALE |
smallint |
小数点以下の桁数です。 |
RADIX |
smallint |
数値型の基数です。 |
NULLABLE |
smallint |
NULL 値を許容するかどうかを示します。 1 = NULL 値を許容します。 0 = NULL 値を許容しません。 |
REMARKS |
varchar(254) |
このフィールドは常に NULL を返します。 |
COLUMN_DEF |
nvarchar(4000) |
列の既定値。 SQL Server 2008 と SQL Server 2005 では、SQL 式をデコードしてカタログ メタデータに格納する方法が SQL Server 2000 と異なります。デコードされた式のセマンティクスは元のテキストと同じですが、構文も同じであるとは限りません。たとえば、デコードされた式からは空白文字が削除されます。詳細については、「SQL Server 2008 R2 におけるデータベース エンジン機能の動作の変更」を参照してください。 |
SQL_DATA_TYPE |
smallint |
記述子の TYPE フィールドでの SQL データ型の値。datetime データ型と SQL-92 interval データ型以外は、DATA_TYPE 列と同じです。この列は常に値を返します。 |
SQL_DATETIME_SUB |
smallint |
datetime および SQL-92 interval データ型のサブタイプ コードです。他のデータ型の場合、この列は NULL を返します。 |
CHAR_OCTET_LENGTH |
int |
文字型または整数型の列の最大長 (バイト単位)。他のすべてのデータ型では、この列は NULL を返します。 |
ORDINAL_POSITION |
int |
オブジェクト内での列の序数です。オブジェクト内の最初の列は 1 です。この列は常に値を返します。 |
IS_NULLABLE |
varchar(254) |
オブジェクト内の列の NULL 値の許容属性です。NULL 値の許容属性の検査は ISO の規則に従います。ISO SQL に準拠している DBMS では、空文字列を返すことはできません。 YES = 列に NULL を含むことができます。 NO = 列に NULL を含むことができません。 NULL が許容されているかわからない列では、長さ 0 の文字列が返されます。 この列に返される値は、NULLABLE 列に返される値とは異なります。 |
SS_DATA_TYPE |
tinyint |
拡張ストアド プロシージャで使用される SQL Server データ型です。詳細については、「データ型 (Transact-SQL)」を参照してください。 |
1 詳細については、Microsoft ODBC のドキュメントを参照してください。
権限
スキーマに対する SELECT 権限が必要です。
例
次の例では、指定されたテーブルの列情報を返します。
USE AdventureWorks2008R2;
GO
EXEC sp_columns @table_name = N'Department',
@table_owner = N'HumanResources';