SQLColAttribute
SQLColAttribute を使用して、準備または実行された ODBC ステートメントの結果セット列の属性を取得できます。準備されたステートメントで SQLColAttribute を呼び出すと、SQL Server とのやり取りが発生します。SQL Server 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 Server Native Client ODBC ドライバでは、準備されていても実行されていないステートメントに対して SQLColAttribute を呼び出すときに、SET FMTONLY ステートメントを使用してサーバーのオーバーヘッドを軽減します。
大きな値型の場合は、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 Server Native Client ODBC ドライバで公開される拡張機能です。SQL Server 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 です。
SQLColAttribute による機能強化された日付と時刻のサポート
日付型または時刻型に対して返される値については、「パラメータと結果のメタデータ」の「IRD フィールドで返される情報」を参照してください。
詳細については、「日付/時刻の強化 (ODBC)」を参照してください。
SQLColAttribute による大きな CLR UDT のサポート
SQLColAttribute は、大きな CLR ユーザー定義型 (UDT) をサポートしています。詳細については、「大きな CLR ユーザー定義型 (ODBC)」を参照してください。
SQLColAttribute によるスパース列のサポート
SQLColAttribute では、新しい IRD (実装行記述子) フィールド SQL_CA_SS_IS_COLUMN_SET に対してクエリを実行し、列が column_set 列かどうかを確認します。
詳細については、「スパース列のサポート (ODBC)」を参照してください。