次の方法で共有


sp_columns (Transact-SQL)

更新 : 2006 年 7 月 17 日

現在の環境で照会できる、指定されたテーブルまたはビューの列情報を返します。

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

構文

sp_columns [ @table_name = ] object  [ , [ @table_owner = ] owner ] 
     [ , [ @table_qualifier = ] qualifier ] 
     [ , [ @column_name = ] column ] 
     [ , [ @ODBCVer = ] ODBCVer ]

引数

  • [ @table_name=] object
    カタログ情報を返すために使用するテーブルまたはビューの名前を指定します。object_name のデータ型は nvarchar(384) で、既定値はありません。ワイルドカードによるパターン照合がサポートされています。
  • [ @table_owner****=**] owner
    カタログ情報を返すために使用するテーブルまたはビューのオブジェクト所有者を指定します。owner のデータ型は nvarchar(384) で、既定値は NULL です。ワイルドカードによるパターン照合がサポートされています。owner を指定しない場合は、基になる DBMS の既定のテーブルまたはビューの可視性ルールが適用されます。

    SQL Server 2005 では、指定した名前のテーブルまたはビューを現在のユーザーが所有している場合、そのテーブルの列が返されます。owner を指定せず、指定した object のテーブルまたはビューを現在のユーザーが所有していない場合は、データベース所有者が所有する、指定した 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 では、columnsyscolumns テーブルに表示される列名を表します。ワイルドカードによるパターン照合がサポートされています。相互運用可能性を最大にするため、ゲートウェイのクライアントは、SQL-92 標準のパターン検索 (% と _ ワイルドカード文字) のみを想定してください。
  • [ @ODBCVer=] ODBCVer
    使用する ODBC のバージョンを指定します。ODBCVer のデータ型は int で、既定値は 2 です。この既定値は ODBC Version 2 を示します。有効な値は 2 または 3 です。バージョン 2 と 3 の動作の相違については、ODBC の SQLColumns 仕様を参照してください。

結果セット

sp_columns ストアド プロシージャ カタログは ODBC の SQLColumns に相当します。返される結果は、TABLE_QUALIFIERTABLE_OWNERTABLE_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 2005 では、SQL 式をデコードしてカタログ メタデータに格納する方法が SQL Server 2000 と異なります。デコードされた式のセマンティクスは元のテキストと同じですが、構文も同じであるとは限りません。たとえば、デコードされた式からは空白文字が削除されます。詳細については、「SQL Server 2005 におけるデータベース エンジン機能の動作の変更」を参照してください。

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 AdventureWorks
GO
EXEC sp_columns @table_name = N'Department',
   @table_owner = N'HumanResources';

参照

関連項目

sp_tables (Transact-SQL)
ストアド プロシージャ カタログ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

追加内容 :
  • COLUMN_DEF 列に、SQL Server 2005 で SQL 式が格納される方法についての記述を追加しました。