SQLColumns

SQLColumns は、CatalogName パラメータ、TableName パラメータ、または ColumnName パラメータに値が存在するかどうかに関係なく SQL_SUCCESS を返します。SQLFetch では、これらのパラメータに無効な値が使用されると SQL_NO_DATA が返されます。

注意

大きな値型の場合、すべての長さパラメータが SQL_SS_LENGTH_UNLIMITED という値で返されます。

SQLColumns は静的サーバー カーソルで実行できます。更新可能なカーソル (動的カーソルまたはキーセット カーソル) で SQLColumns を実行しようとすると、カーソルの種類が変更されていることを示す SQL_SUCCESS_WITH_INFO が返されます。

SQL Server Native Client ODBC ドライバは、CatalogName パラメータについて 2 部構成の名前 (Linked_Server_Name.Catalog_Name) を受け入れることにより、リンク サーバー上のテーブルに関する情報の報告をサポートしています。

TableName にワイルドカードを使用しない ODBC 2.x アプリケーションの場合、名前が TableName と一致し、現在のユーザーが所有するすべてのテーブルに関する情報が SQLColumns から返されます。現在のユーザーが TableName パラメータと名前が一致するテーブルを所有していない場合、他のユーザーが所有し、名前が TableName パラメータと一致するすべてのテーブルに関する情報が SQLColumns から返されます。ワイルドカードを使用する ODBC 2.x アプリケーションの場合、TableName と名前が一致するすべてのテーブルが SQLColumns から返されます。ODBC 3.x アプリケーションの場合、ワイルドカードを使用するかどうかや所有者に関係なく、TableName と名前が一致するすべてのテーブルが SQLColumns から返されます。

次の表は、結果セットによって返される列の一覧です。

列名

説明

DATA_TYPE

varchar(max) データ型の場合、SQL_VARCHAR、SQL_VARBINARY、または SQL_WVARCHAR を返します。

TYPE_NAME

varchar(max) データ型、varbinary(max) データ型、および nvarchar(max) データ型の場合、"varchar"、"varbinary"、または "nvarchar" を返します。

COLUMN_SIZE

varchar(max) データ型の場合、列のサイズが無制限であることを示す SQL_SS_LENGTH_UNLIMITED を返します。

BUFFER_LENGTH

varchar(max) データ型の場合、バッファのサイズが無制限であることを示す SQL_SS_LENGTH_UNLIMITED を返します。

SQL_DATA_TYPE

varchar(max) データ型の場合、SQL_VARCHAR、SQL_VARBINARY、または SQL_WVARCHAR を返します。

CHAR_OCTET_LENGTH

char 型または binary 型の列の最大長を返します。サイズが無制限であることを示す場合は 0 を返します。

SS_XML_SCHEMACOLLECTION_CATALOG_NAME

XML スキーマ コレクション名が定義されているカタログの名前を返します。カタログ名が見つからない場合は、この変数に空文字列が含まれます。

SS_XML_SCHEMACOLLECTION_SCHEMA_NAME

XML スキーマ コレクション名が定義されているスキーマの名前を返します。スキーマ名が見つからない場合は、この変数に空文字列が含まれます。

SS_XML_SCHEMACOLLECTION_NAME

XML スキーマ コレクションの名前を返します。名前が見つからない場合は、この変数に空文字列が含まれます。

SS_UDT_CATALOG_NAME

UDT (ユーザー定義型) を含むカタログの名前です。

SS_UDT_SCHEMA_NAME

UDT を含むスキーマの名前です。

SS_UDT_ASSEMBLY_TYPE_NAME

UDT のアセンブリ修飾名です。

UDT の場合、UDT の名前を示すには既存の TYPE_NAME 列が使用されます。そのため、SQLColumns または SQLProcedureColumns の結果セットには、新しい列は追加されません。UDT 列または UDT パラメータの場合、DATA_TYPE は SQL_SS_UDT です。

サーバーからパラメータの UDT に関する追加のメタデータ プロパティを返したり、サーバーでこのメタデータ プロパティの情報が必要となる場合は、上記に定義したドライバ固有の新しい記述子を使用して、UDT のメタデータ プロパティの取得や設定を行えます。

クライアントが SQL Server に接続して SQLColumns を呼び出した場合、カタログ入力パラメータに NULL またはワイルドカード値を使用すると、他のカタログから情報が返されません。代わりに、現在のカタログに関する情報だけが返されます。クライアントは、最初に SQLTables を呼び出して、目的のテーブルが存在するカタログを特定できます。次に、SQLColumns の呼び出しでカタログ入力パラメータにカタログの値を使用して、そのテーブル内の列に関する情報を取得できます。

SQLColumns とテーブル値パラメータ

SQLColumns から返される結果セットは、SQL_SOPT_SS_NAME_SCOPE の設定によって異なります。詳細については、「SQLSetStmtAttr」を参照してください。テーブル値パラメータ用に次の列が追加されました。

列名

データ型

内容

SS_IS_COMPUTED

Smallint

TABLE_TYPE の列では、列が計算列の場合は SQL_TRUE、それ以外の場合は SQL_FALSE になります。

SS_IS_IDENTITY

Smallint

列が ID 列の場合は SQL_TRUE、それ以外の場合は SQL_FALSE になります。

テーブル値パラメータの詳細については、「テーブル値パラメータ (ODBC)」を参照してください。

SQLColumns による機能強化された日付と時刻のサポート

date 型または time 型に対して返される値の詳細については、「カタログ メタデータ」を参照してください。

詳細については、「日付/時刻の強化 (ODBC)」を参照してください。

SQLColumns による大きな CLR UDT のサポート

SQLColumns は、大きな CLR ユーザー定義型 (UDT) をサポートしています。詳細については、「大きな CLR ユーザー定義型 (ODBC)」を参照してください。

SQLColumns によるスパース列のサポート

2 つの SQL Server 固有の列が SQLColumns の結果セットに追加されています。

列名

データ型

説明

SS_IS_SPARSE

Smallint

列がスパース列の場合は SQL_TRUE、それ以外の場合は SQL_FALSE になります。

SS_IS_COLUMN_SET

Smallint

列が column_set 列の場合は SQL_TRUE、それ以外の場合は SQL_FALSE になります。

SS_IS_SPARSE および SS_IS_COLUMN_SET は、ODBC 仕様に準拠して、SQL Server 2008 よりも前のバージョンの SQL Server に追加されたドライバ固有のすべての列の前、かつ ODBC 自体によって指定されるすべての列の後に作成されます。

SQLColumns から返される結果セットは、SQL_SOPT_SS_NAME_SCOPE の設定によって異なります。詳細については、「SQLSetStmtAttr」を参照してください。

ODBC のスパース列の詳細については、「スパース列のサポート (ODBC)」を参照してください。

関連項目

概念

その他の技術情報