次の方法で共有


sp_columns (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス

現在の環境において、指定したオブジェクトでクエリを実行できる列の情報を返します。

Transact-SQL 構文表記規則

構文

sp_columns
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @column_name = ] N'column_name' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

引数

[ @table_name = ] N'table_name'

@table_namenvarchar(384) で、既定値はありません。

カタログ情報を返すために使用されるオブジェクトの名前。 @table_name には、テーブル、ビュー、またはテーブル値関数などの列であるその他のオブジェクトを指定できます。 @table_namenvarchar(384) で、既定値はありません。 ワイルドカードのパターン マッチングがサポートされています。

[ @table_owner = ] N'table_owner'

カタログ情報を返すために使用されるオブジェクトのオブジェクト所有者。 @table_ownernvarchar(384) で、既定値は NULL です。 ワイルドカードのパターン マッチングがサポートされています。 @table_ownerが指定されていない場合は、基になる DBMS の既定のオブジェクト可視性ルールが適用されます。

指定した名前のオブジェクトを現在のユーザーが所有している場合は、そのオブジェクトの列が返されます。 @table_ownerが指定されておらず、現在のユーザーが指定した@table_nameを持つオブジェクトを所有していない場合、sp_columnsは、データベース所有者が所有する指定した@table_nameを持つオブジェクトを検索します。 存在する場合は、そのオブジェクトの列が返されます。

[ @table_qualifier = ] N'table_qualifier'

@table_qualifiersysname で、既定値は NULL です。

オブジェクト修飾子の名前。 @table_qualifiersysname で、既定値は NULL です。 さまざまな DBMS 製品では、オブジェクトの 3 部構成の名前付け (<qualifier>.<owner>.<name>) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、オブジェクトのデータベース環境のサーバー名を表します。

[ @column_name = ] N'column_name'

1 つの列で、カタログ情報の列が 1 つだけ必要な場合に使用されます。 @column_namenvarchar(384) で、既定値は NULL です。 @column_nameが指定されていない場合は、すべての列が返されます。 SQL Server では、 @column_name は、 syscolumns テーブルに記載されている列名を表します。 ワイルドカードのパターン マッチングがサポートされています。 相互運用性を最大限に高める場合、ゲートウェイ クライアントは SQL-92 標準パターン マッチング ( %_ ワイルドカード文字) のみを想定する必要があります。

[ @ODBCVer = ] ODBCVer

使用されている ODBC のバージョン。 @ODBCVerint で、既定値は 2 です。 これは ODBC バージョン 2 を示します。 有効な値は 2 または 3です。 バージョン 2 と 3 の動作の違いについては、ODBC SQLColumns の仕様を参照してください。

リターン コードの値

なし。

結果セット

sp_columns カタログ ストアド プロシージャは、ODBC でのSQLColumnsと同じです。 返される結果は、 TABLE_QUALIFIERTABLE_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_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 値の許容属性です。 ISO の規則に従って、NULL 値の許容が判断されます。 ISO SQL 準拠の DBMS は空の文字列を返すことはできません。

YES = 列には NULLを含めることができます。
NO = 列に NULLを含めることはできません。

NULL 値の許容が不明な場合、この列は長さ 0 の文字列になります。

この列に対して返される値は、 NULLABLE 列に対して返される値とは異なります。
SS_DATA_TYPE tinyint 拡張ストアド プロシージャによって使われる SQL Server のデータ型。 詳細については、データ型を参照してください。

1 詳細については、「 ODBC の概要を参照してください。

アクセス許可

スキーマに対する SELECTVIEW DEFINITION のアクセス許可が必要です。

解説

sp_columns は、区切り記号付き識別子の要件に従います。 詳細については、「 Database 識別子」を参照してください。

この記事の Transact-SQL コード サンプルは AdventureWorks2022 または AdventureWorksDW2022 サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクトのホーム ページからダウンロードできます。

次の例では、指定したテーブルの列情報が返されます。

USE AdventureWorks2022;
GO

EXEC sp_columns
    @table_name = N'Department',
    @table_owner = N'HumanResources';

例: Azure Synapse Analytics、Analytics Platform System (PDW)

次の例では、指定したテーブルの列情報が返されます。

USE AdventureWorksDW2022;
GO

EXEC sp_columns
    @table_name = N'DimEmployee',
    @table_owner = N'dbo';