SQLColAttribute

SQLColAttribute を使用して、準備または実行された ODBC ステートメントの結果セット列の属性を取得できます。準備されたステートメントで SQLColAttribute を呼び出すと、SQL Server とのやり取りが発生します。SQL Native Client ODBC ドライバは、ステートメント実行の一環として、結果セット列のデータを受け取ります。したがって、SQLExecute または SQLExecDirect の完了後に SQLColAttribute を呼び出すと、サーバーとのやり取りが発生しません。

ms131383.note(ja-jp,SQL.90).gifメモ :
すべての SQL Server の結果セットで、ODBC 列の ID 属性は使用できません。
フィールド ID 説明

SQL_COLUMN_TABLE_NAME

サーバー カーソルを生成するステートメントから取得した結果セットで使用できます。または、FOR BROWSE 句を含む実行済みの SELECT ステートメントで使用できます。

SQL_DESC_BASE_COLUMN_NAME

サーバー カーソルを生成するステートメントから取得した結果セットで使用できます。または、FOR BROWSE 句を含む実行済みの SELECT ステートメントで使用できます。

SQL_DESC_BASE_TABLE_NAME

サーバー カーソルを生成するステートメントから取得した結果セットで使用できます。または、FOR BROWSE 句を含む実行済みの SELECT ステートメントで使用できます。

SQL_DESC_CATALOG_NAME

データベース名です。サーバー カーソルを生成するステートメントから取得した結果セットで使用できます。または、FOR BROWSE 句を含む実行済みの SELECT ステートメントで使用できます。

SQL_DESC_LABEL

すべての結果セットで使用できます。値は、SQL_DESC_NAME フィールドの値と等しくなります。

列が式の結果か、式にラベル割り当てが含まれていない場合にのみ、フィールド長が 0 (ゼロ) になります。

SQL_DESC_NAME

すべての結果セットで使用できます。値は、SQL_DESC_LABEL フィールドの値と等しくなります。

列が式の結果か、式にラベル割り当てが含まれていない場合にのみ、フィールド長が 0 (ゼロ) になります。

SQL_DESC_SCHEMA_NAME

所有者名。サーバー カーソルを生成するステートメントから取得した結果セットで使用できます。または、FOR BROWSE 句を含む実行済みの SELECT ステートメントで使用できます。

SELECT ステートメントの列に所有者名を指定した場合にのみ使用できます。

SQL_DESC_TABLE_NAME

サーバー カーソルを生成するステートメントから取得した結果セットで使用できます。または、FOR BROWSE 句を含む実行済みの SELECT ステートメントで使用できます。

SQL_DESC_UNNAMED

結果セット内にあるすべての列に対する SQL_NAMED が返されます。ただしこれは、式の一部にラベル割り当てが含まれておらず、列がこの式の結果ではない場合に限ります。SQL_DESC_UNNAMED が SQL_UNNAMED を返すときは、すべての ODBC 列の ID 属性には、その列に対して長さゼロの文字列が含まれます。

SQL Native Client ODBC ドライバは、任意の最新バージョンの SQL Server に接続するときに、SET FMTONLY ステートメントを使用し、準備済みで未実行のステートメントに対して SQLColAttribute を呼び出すときのサーバーのオーバーヘッドを軽減します。

大きな値型の場合は、SQLColAttribute から次の値が返されます。

フィールド ID 変更の説明

SQL_DESC_DISPLAY_SIZE

列のデータを表示する場合に必要となる最大文字数です。大きな値型の列の場合、返される値は SQL_SS_LENGTH_UNLIMITED です。

SQL_DESC_LENGTH

結果セット内の列の実際の長さを返します。大きな値型の列の場合、返される値は SQL_SS_LENGTH_UNLIMITED です。

SQL_DESC_OCTET_LENGTH

大きな値型の列の最大長を返します。無制限のサイズを示す場合、SQL_SS_LENGTH_UNLIMITED を使用します。

SQL_DESC_PRECISION

大きな値型の列の場合、値 SQL_SS_LENGTH_UNLIMITED を返します。

SQL_DESC_TYPE

大きな値型の場合、SQL_VARCHAR、SQL_WVARCHAR、および SQL_VARBINARY を返します。

SQL_DESC_TYPE_NAME

大きな値型の場合、"varchar"、"varbinary"、"nvarchar" を返します。

すべてのバージョンで、準備された SQL ステートメントのバッチによって複数の結果セットが生成されるときは、最初の結果セットのみの列属性が報告されます。

次の列属性は、SQL Native Client ODBC ドライバで公開される拡張機能です。SQL Native Client ODBC ドライバは、NumericAttrPtr パラメータにすべての値を返します。WORD 配列へのポインタである SQL_CA_SS_COMPUTE_BYLIST を除き、SDWORD 型 (符号付き long 型) として値が返されます。

フィールド ID 戻り値

SQL_CA_SS_COLUMN_HIDDEN*

参照される列が、FOR BROWSE 句を含む Transact-SQL SELECT ステートメントをサポートするために作成された非表示の主キーの一部である場合は、TRUE になります。

SQL_CA_SS_COLUMN_ID

現在の Transact-SQL SELECT ステートメント内にある COMPUTE 句の結果列の序数位置。

SQL_CA_SS_COLUMN_KEY*

参照される列が行の主キーの一部で、Transact-SQL SELECT ステートメントに FOR BROWSE 句が含まれる場合は、TRUE になります。

SQL_CA_SS_COLUMN_OP

COMPUTE 句列の値に関連する集計演算子を指定する整数。整数値の定義は sqlncli.h にあります。

SQL_CA_SS_COLUMN_ORDER

ODBC または Transact-SQL SELECT ステートメントの ORDER BY 句内にある列の序数位置。

SQL_CA_SS_COLUMN_SIZE

列から取得したデータ値を SQL_C_BINARY 変数にバインドするのに必要な、バイト単位の最大長。

SQL_CA_SS_COLUMN_SSTYPE

SQL Server の列に格納されたデータのネイティブ データ型。型値の定義は sqlncli.h にあります。

SQL_CA_SS_COLUMN_UTYPE

SQL Server における列のユーザー定義データ型に関する基本データ型。型値の定義は sqlncli.h にあります。

SQL_CA_SS_COLUMN_VARYLEN

列のデータが可変長の場合は TRUE、それ以外の場合は FALSE です。

SQL_CA_SS_COMPUTE_BYLIST

COMPUTE 句の BY 句で使用される列を指定する、WORD 型 (符号なし short 型) の配列へのポインタ。COMPUTE 句に BY が指定されていない場合、NULL ポインタを返します。

配列の最初の要素には、BY リスト列の数が含まれます。もう 1 つの要素は列序数です。

SQL_CA_SS_COMPUTE_ID

現在の Transact-SQL SELECT ステートメントの COMPUTE 句の結果となる行の computeid

SQL_CA_SS_NUM_COMPUTES

現在の Transact-SQL SELECT ステートメントで指定されている COMPUTE 句の数。

SQL_CA_SS_NUM_ORDERS

ODBC または Transact-SQL SELECT ステートメントの ORDER BY 句で指定されている列の数。

*   ステートメント属性 SQL_SOPT_SS_HIDDEN_COLUMNS を SQL_HC_ON に設定している場合に使用できます。

SQL Server 2005 では、XML スキーマ コレクション名、スキーマ名、およびカタログ名を示す追加情報を提供するために、ドライバ固有の新しい記述子フィールドが追加されました。これらのプロパティでは、英数字以外の文字が含まれる場合でも、引用符やエスケープ文字は必要ありません。次の表では、追加された新しい記述子フィールドについて説明します。

列名 データ型 説明

SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME

CharacterAttributePtr

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

この情報は、IRD の SQL_DESC_SS_XML_SCHEMACOLLECTION_CATALOG_NAME レコード フィールドから返されます。このレコード フィールドは読み取りと書き込みが可能なフィールドです。

SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAM E

CharacterAttributePtr

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

この情報は、IRD の SQL_DESC_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME レコード フィールドから返されます。このレコード フィールドは読み取りと書き込み可能なフィールドです。

SQL_CA_SS_XML_SCHEMACOLLECTION_NAME

CharacterAttributePtr

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

この情報は、IRD の SQL_DESC_SS_XML_SCHEMACOLLECTION_NAME レコード フィールドから返されます。このレコード フィールドは読み取りと書き込み可能なフィールドです。

SQL Server 2005 では、結果セットのユーザー定義型 (UDT) 列に関する追加情報、またはストアド プロシージャやパラメータ化クエリの UDT パラメータに関する追加情報を提供するために、ドライバ固有の新しい記述子フィールドが追加されました。これらのプロパティでは、英数字以外の文字が含まれる場合でも、引用符やエスケープ文字は必要ありません。次の表では、追加された新しい記述子フィールドについて説明します。

列名 データ型 説明

SQL_CA_SS_UDT_CATALOG_NAME

CharacterAttributePtr

UDT を含むカタログの名前。

SQL_CA_SS_UDT_SCHEMA_NAME

CharacterAttributePtr

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

SQL_CA_SS_UDT_TYPE_NAME

CharacterAttributePtr

UDT の名前。

SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME

CharacterAttributePtr

UDT のアセンブリ修飾名。

UDT の名前を示すために、既存の記述子フィールド ID の SQL_DESC_TYPE_NAME が使用されます。UDT 型の列の SQL_DESC_TYPE フィールドは SQL_SS_UDT です。

参照

概念

ODBC API 実装の詳細
SQLSetStmtAttr

その他の技術情報

SQLColAttribute 関数

ヘルプおよび情報

SQL Server 2005 の参考資料の入手