sp_columns (Transact-SQL)
適用対象: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 = ] 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 バージョン 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 値を許容しません。 |
備考 | 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 のデータ型。 詳細については、「 データ型 (Transact-SQL)」を参照してください。 |
1 詳しくは、Microsoft ODBC のドキュメントをご覧ください。
アクセス許可
スキーマに対する SELECT と VIEW DEFINITION のアクセス許可が必要です。
解説
sp_columns は、区切られた識別子の要件に従います。 詳細については、「データベース識別子」を参照してください。
例
次の例では、指定したテーブルの列情報が返されます。
USE AdventureWorks2022;
GO
EXEC sp_columns @table_name = N'Department',
@table_owner = N'HumanResources';
例: Azure Synapse Analytics、Analytics Platform System (PDW)
次の例では、指定したテーブルの列情報が返されます。
-- Uses AdventureWorks
EXEC sp_columns @table_name = N'DimEmployee',
@table_owner = N'dbo';
参照
sp_tables (Transact-SQL)
ストアド プロシージャ カタログ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)