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