sp_columns (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

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

Transact-SQL 構文表記規則

構文

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

引数

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

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

指定した名前のオブジェクトを現在のユーザーが所有している場合は、そのオブジェクトの列が返されます。 owner を指定せず、object で指定したオブジェクトを現在のユーザーが所有していない場合、sp_columns では、データベース所有者によって所有される指定した object でオブジェクトが検索されます。 存在する場合は、そのオブジェクトの列が返されます。

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

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

[ @ODBCVer = ] ODBCVer 使われている ODBC のバージョンです。 ODBCVerint であり、既定値は 2 です。 これは ODBC バージョン 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 値を許容しません。
備考 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)