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 のウェアハウス
現在の環境において、指定したオブジェクトでクエリを実行できる列の情報を返します。
構文
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_name は nvarchar(384) で、既定値はありません。
カタログ情報を返すために使用されるオブジェクトの名前。 @table_name には、テーブル、ビュー、またはテーブル値関数などの列であるその他のオブジェクトを指定できます。 @table_name は nvarchar(384) で、既定値はありません。 ワイルドカードのパターン マッチングがサポートされています。
[ @table_owner = ] N'table_owner'
カタログ情報を返すために使用されるオブジェクトのオブジェクト所有者。 @table_owner は nvarchar(384) で、既定値は NULL
です。 ワイルドカードのパターン マッチングがサポートされています。 @table_ownerが指定されていない場合は、基になる DBMS の既定のオブジェクト可視性ルールが適用されます。
指定した名前のオブジェクトを現在のユーザーが所有している場合は、そのオブジェクトの列が返されます。 @table_ownerが指定されておらず、現在のユーザーが指定した@table_nameを持つオブジェクトを所有していない場合、sp_columns
は、データベース所有者が所有する指定した@table_nameを持つオブジェクトを検索します。 存在する場合は、そのオブジェクトの列が返されます。
[ @table_qualifier = ] N'table_qualifier'
@table_qualifier は sysname で、既定値は NULL
です。
オブジェクト修飾子の名前。 @table_qualifier は sysname で、既定値は NULL
です。 さまざまな DBMS 製品では、オブジェクトの 3 部構成の名前付け (<qualifier>.<owner>.<name>
) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、オブジェクトのデータベース環境のサーバー名を表します。
[ @column_name = ] N'column_name'
1 つの列で、カタログ情報の列が 1 つだけ必要な場合に使用されます。 @column_name は nvarchar(384) で、既定値は NULL
です。 @column_nameが指定されていない場合は、すべての列が返されます。 SQL Server では、 @column_name は、 syscolumns
テーブルに記載されている列名を表します。 ワイルドカードのパターン マッチングがサポートされています。 相互運用性を最大限に高める場合、ゲートウェイ クライアントは SQL-92 標準パターン マッチング ( %
と _
ワイルドカード文字) のみを想定する必要があります。
[ @ODBCVer = ] ODBCVer
使用されている ODBC のバージョン。 @ODBCVer は int で、既定値は 2
です。 これは ODBC バージョン 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_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 の概要を参照してください。
アクセス許可
スキーマに対する SELECT
と VIEW 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';