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)」を参照してください。