次の方法で共有


SQLSetStmtAttr 関数

準拠
導入されたバージョン: ODBC 3.0 標準コンプライアンス: ISO 92

まとめ
SQLSetStmtAttr は、ステートメントに関連する属性を設定します。

Note

ODBC 3.x アプリケーションが ODBC 2.x ドライバーを操作している場合にドライバー マネージャーがこの関数をマップする方法の詳細については、「 アプリケーションの下位互換性のための置換関数のマッピング」を参照してください。

構文

  
SQLRETURN SQLSetStmtAttr(  
     SQLHSTMT      StatementHandle,  
     SQLINTEGER    Attribute,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    StringLength);  

引数

StatementHandle
[入力]ステートメント ハンドル。

属性
[入力][コメント] に表示される、設定するオプション。

ValuePtr
[入力] Attribute に関連付ける値。 Attribute の値に応じて、ValuePtr は次のいずれかになります。

  • ODBC 記述子ハンドル。

  • SQLUINTEGER 値。

  • SQLULEN 値。

  • 次のいずれかを指すポインター。

    • null で終わる文字列。

    • バイナリ バッファー。

    • SQLLEN、SQLULEN、または SQLUSMALLINT 型の値または配列。

    • ドライバー定義の値。

Attribute引数がドライバー固有の値である場合、ValuePtr は符号付き整数である可能性があります。

StringLength
[入力] Attribute が ODBC で定義された属性で、 ValuePtr が文字列またはバイナリ バッファーを指している場合、この引数の長さは *ValuePtr にする必要があります。 Attributeが ODBC で定義された属性で、ValuePtr が整数の場合、StringLength は無視されます。

Attribute がドライバー定義の属性である場合、アプリケーションは、StringLength 引数を設定することによって、ドライバー マネージャーに属性の性質を示します。 StringLength には、次の値を指定できます。

  • ValuePtr が文字列へのポインターの場合、StringLength は文字列またはSQL_NTSの長さです。

  • ValuePtr がバイナリ バッファーへのポインターである場合、アプリケーションは SQL_LEN_BINARY_ATTR(length) マクロの結果を StringLength に配置します。 これにより、 StringLength に負の値が設定されます。

  • ValuePtr が文字列またはバイナリ文字列以外の値へのポインターである場合、StringLength には値がSQL_IS_POINTER必要があります。

  • ValuePtrに固定長の値が含まれている場合、StringLengthは必要に応じてSQL_IS_INTEGERまたはSQL_IS_UINTEGERです。

返品

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR、またはSQL_INVALID_HANDLE。

診断

SQLSetStmtAttrがSQL_ERRORまたはSQL_SUCCESS_WITH_INFOを返す場合、関連付けられた SQLSTATE 値は、SQL_HANDLE_STMTのHandleTypeStatementHandleHandleを使用してSQLGetDiagRecを呼び出すことによって取得できます。 次の表に、 SQLSetStmtAttr によって一般的に返される SQLSTATE 値を示し、この関数のコンテキストでそれぞれについて説明します。表記 "(DM)" は、ドライバー マネージャーによって返される SQLSTATEs の説明の前にあります。 特に明記されていない限り、各 SQLSTATE 値に関連付けられている戻りコードはSQL_ERROR。

SQLSTATE エラー 説明
01000 一般的な警告 ドライバー固有の情報メッセージ。 (関数はSQL_SUCCESS_WITH_INFOを返します。
01S02 オプション値の変更 ドライバーは、 ValuePtr で指定された値をサポートしていません。または、実装の作業条件のため、 ValuePtr で指定された値が無効であったため、ドライバーは同様の値を置き換えました。 (SQLGetStmtAttr を呼び出して、一時的に置換された値を決定できます。置き換え値は、カーソルが閉じられるまで StatementHandle に対して有効です。その時点で、ステートメント属性は前の値に戻ります。 変更できるステートメント属性は次のとおりです。

SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ATTR_ROW_ARRAY_SIZE SQL_ ATTR_SIMULATE_CURSOR

(関数はSQL_SUCCESS_WITH_INFOを返します。
08S01 通信リンクエラー ドライバーとドライバーが接続されたデータ ソース間の通信リンクは、関数の処理が完了する前に失敗しました。
24000 カーソル状態が無効 AttributeがSQL_ATTR_CONCURRENCY、SQL_ATTR_CURSOR_TYPE、SQL_ATTR_SIMULATE_CURSOR、またはSQL_ATTR_USE_BOOKMARKSされ、カーソルが開かれていました。
HY000 一般的なエラー 特定の SQLSTATE がなく、実装固有の SQLSTATE が定義されていないエラーが発生しました。 *MessageText バッファー内の SQLGetDiagRec によって返されるエラー メッセージには、エラーとその原因が記述されています。
HY001 メモリ割り当てエラー ドライバーは、関数の実行または完了をサポートするために必要なメモリを割り当てませんでした。
HY009 null ポインターの使用が無効です Attribute引数は文字列属性を必要とするステートメント属性を識別し、ValuePtr 引数は null ポインターでした。
HY010 関数シーケンス エラー (DM) StatementHandle に関連付けられている接続ハンドルに対して非同期実行関数が呼び出されました。 この非同期関数は、 SQLSetStmtAttr 関数が呼び出されたときにまだ実行されていました。

(DM) SQLExecuteSQLExecDirect、または SQLMoreResults StatementHandle が呼び出され、SQL_PARAM_DATA_AVAILABLEが返されました。 この関数は、すべてのストリーミング パラメーターのデータが取得される前に呼び出されました。

(DM) 非同期実行関数が StatementHandle に対して呼び出され、この関数が呼び出されたときにはまだ実行されていました。

(DM) SQLExecuteSQLExecDirectSQLBulkOperations、または SQLSetPosStatementHandle に対して呼び出され、SQL_NEED_DATAが返されました。 この関数は、すべての実行時データ パラメーターまたは列に対してデータが送信される前に呼び出されました。
HY011 現在、属性を設定できません AttributeがSQL_ATTR_CONCURRENCY、SQL_ ATTR_CURSOR_TYPE、SQL_ ATTR_SIMULATE_CURSOR、またはSQL_ ATTR_USE_BOOKMARKSされ、ステートメントが準備されました。
HY013 メモリ管理エラー メモリが不足している可能性があるため、基になるメモリ オブジェクトにアクセスできなかったため、関数呼び出しを処理できませんでした。
HY017 自動的に割り当てられた記述子ハンドルの使用が無効です (DM) Attribute 引数がSQL_ATTR_IMP_ROW_DESCまたはSQL_ATTR_IMP_PARAM_DESCされました。

(DM) Attribute 引数がSQL_ATTR_APP_ROW_DESCまたはSQL_ATTR_APP_PARAM_DESCされ、 ValuePtr の値は、ARD または APD に最初に割り当てられたハンドル以外の暗黙的に割り当てられた記述子ハンドルでした。
HY024 属性値が無効です 指定した Attribute 値を指定すると、 ValuePtr で無効な値が指定されました。 (ドライバー マネージャーは、SQL_ATTR_ACCESS_MODEやSQL_ ATTR_ASYNC_ENABLEなどの個別の値のセットを受け入れる接続属性とステートメント属性に対してのみ、この SQLSTATE を返します。その他のすべての接続属性とステートメント属性については、ドライバーは ValuePtr で指定された値を確認する必要があります。

Attribute引数はSQL_ATTR_APP_ROW_DESCまたはSQL_ATTR_APP_PARAM_DESCであり、ValuePtr は、StatementHandle 引数と同じ接続上にない明示的に割り当てられた記述子ハンドルでした。
HY090 文字列またはバッファーの長さが無効です (DM) *ValuePtr は文字列であり、 StringLength 引数は 0 未満でしたが、SQL_NTSされませんでした。
HY092 無効な属性/オプション識別子 (DM) 引数 Attribute に指定された値が、ドライバーでサポートされている ODBC のバージョンに対して無効でした。

(DM) 引数 Attribute に指定された値が読み取り専用の属性でした。
HY117 不明なトランザクション状態のため、接続が中断されます。 切断関数と読み取り専用関数のみが許可されます。 (DM) 中断状態の詳細については、「 SQLEndTran 関数を参照してください。
HYC00 省略可能な機能が実装されていません 引数 Attribute に指定された値は、ドライバーでサポートされている ODBC のバージョンに対して有効な ODBC ステートメント属性でしたが、ドライバーではサポートされていませんでした。

引数 Attribute がSQL_ATTR_ASYNC_ENABLEされ、InfoType SQL_ASYNC_MODE の SQLGetInfo の呼び出しはSQL_AM_CONNECTIONを返します。

Attribute引数がSQL_ATTR_ENABLE_AUTO_IPDされ、接続属性SQL_ATTR_AUTO_IPDの値がSQL_FALSEされました。
HYT01 接続のタイムアウト データ ソースが要求に応答する前に、接続タイムアウト期間の有効期限が切れています。 接続タイムアウト期間は、SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr によって設定されます。
IM001 ドライバーは、この関数をサポートしていません (DM) StatementHandle に関連付けられているドライバーは、関数をサポートしていません。
S1118 ドライバーは非同期通知をサポートしていません SQLSetStmtAttrを呼び出してSQL_ATTR_ASYNC_STMT_EVENTを設定する場合、非同期通知はドライバーではサポートされません。

Comments

ステートメントのステートメント属性は、 SQLSetStmtAttr への別の呼び出しによって変更されるか SQLFreeHandleを呼び出してステートメントが削除されるまで有効です。 SQL_CLOSE、SQL_UNBIND、またはSQL_RESET_PARAMSオプションを指定してSQLFreeStmt を呼び出しても、ステートメント属性はリセットされません。

一部のステートメント属性は、データ ソースが ValuePtr で指定された値をサポートしていない場合に、同様の値の置換をサポートします。 このような場合、ドライバーはSQL_SUCCESS_WITH_INFOと SQLSTATE 01S02 を返します (オプション値が変更されました)。 たとえば、 Attribute がSQL_ATTR_CONCURRENCYされ、 ValuePtr がSQL_CONCUR_ROWVERされ、データ ソースでこれをサポートしていない場合、ドライバーはSQL_CONCUR_VALUESを置き換え、SQL_SUCCESS_WITH_INFOを返します。 置換された値を特定するために、アプリケーションは SQLGetStmtAttr を呼び出します。

ValuePtr で設定される情報の形式は、指定したAttributeによって異なります。 SQLSetStmtAttr は、2 つの異なる形式 (文字列または整数値) のいずれかで属性情報を受け取ります。 それぞれの形式は属性の説明に記載されています。 この形式は、 SQLGetStmtAttr 内の各属性に対して返される情報に適用されます。 SQLSetStmtAttrValuePtr 引数が指す文字列の長さはStringLength

Note

SQLSetConnectAttr を呼び出して接続レベルでステートメント属性を設定する機能は、ODBC 3.x ではお勧めしません。 ODBC 3.x アプリケーションでは、接続レベルでステートメント属性を設定しないでください。 ODBC 3.x ステートメント属性は接続レベルでは設定できません。ただし、接続属性とステートメント属性の両方であるSQL_ATTR_METADATA_ID属性とSQL_ATTR_ASYNC_ENABLE属性を除き、接続レベルまたはステートメント レベルで設定できます。

Note

ODBC 3.x ドライバーは、ODBC 2.x ステートメント オプションを接続レベルで設定する ODBC 2.x アプリケーションで動作する必要がある場合にのみ、この機能をサポートする必要があります。 詳細については、「付録 G: 下位互換性のためのドライバー ガイドライン」の「 SQLSetConnectOption Mapping 」の「接続レベルでのステートメント オプションの設定」を参照してください。

記述子フィールドを設定するステートメント属性

多くのステートメント属性は、記述子のヘッダー フィールドに対応しています。 これらの属性を設定すると、実際には記述子フィールドが設定されます。 SQLSetDescField ではなく、SQLSetStmtAttrの呼び出しによってフィールドを設定する関数呼び出しに記述子ハンドルを取得する必要がないという利点があります。

注意事項

1 つのステートメント SQLSetStmtAttr を呼び出すと、他のステートメントに影響する可能性があります。 これは、ステートメントに関連付けられている APD または ARD が明示的に割り当てられ、他のステートメントにも関連付けられている場合に発生します。 SQLSetStmtAttr は APD または ARD を変更するため、この記述子が関連付けられているすべてのステートメントに変更が適用されます。 これが必要な動作でない場合、アプリケーションは、 SQLSetStmtAttr を呼び出す前に、(SQLSetStmtAttr を呼び出して SQL_ATTR_APP_ROW_DESCまたはSQL_ATTR_APP_PARAM_DESCフィールドを別の記述子ハンドルに設定することによって) 他のステートメントからこの記述子 関連付けを解除する必要があります

対応するステートメント属性が設定された結果として記述子フィールドが設定された場合、フィールドは、 StatementHandle 引数によって識別されるステートメントに現在関連付けられている適用可能な記述子に対してのみ設定され、属性設定は将来そのステートメントに関連付けられる記述子には影響しません。 ステートメント属性でもある記述子フィールドが、 SQLSetDescField の呼び出しによって設定されると、対応するステートメント属性が設定されます。 明示的に割り当てられた記述子がステートメントから関連付け解除されている場合、ヘッダー フィールドに対応するステートメント属性は、暗黙的に割り当てられた記述子のフィールドの値に戻ります。

ステートメントが割り当てられると ( SQLAllocHandle を参照)、4 つの記述子ハンドルが自動的に割り当てられ、ステートメントに関連付けられます。 明示的に割り当てられた記述子ハンドルをステートメントに関連付けるには、記述子ハンドルを割り当てる SQL_HANDLE_DESCのfHandleTypeを使用してSQLSetStmtAttrを呼び出して記述子ハンドルをステートメントに関連付けます。

次の表のステートメント属性は、記述子ヘッダー フィールドに対応しています。

ステートメント属性 ヘッダー フィールド Desc。
SQL_ATTR_PARAM_BIND_OFFSET_PTR SQL_DESC_BIND_OFFSET_PTR APD
SQL_ATTR_PARAM_BIND_TYPE SQL_DESC_BIND_TYPE APD
SQL_ATTR_PARAM_OPERATION_PTR SQL_DESC_ARRAY_STATUS_PTR APD
SQL_ATTR_PARAM_STATUS_PTR SQL_DESC_ARRAY_STATUS_PTR IPD
SQL_ATTR_PARAMS_PROCESSED_PTR SQL_DESC_ROWS_PROCESSED_PTR IPD
SQL_ATTR_PARAMSET_SIZE SQL_DESC_ARRAY_SIZE APD
SQL_ATTR_ROW_ARRAY_SIZE SQL_DESC_ARRAY_SIZE ARD
SQL_ATTR_ROW_BIND_OFFSET_PTR SQL_DESC_BIND_OFFSET_PTR ARD
SQL_ATTR_ROW_BIND_TYPE SQL_DESC_BIND_TYPE ARD
SQL_ATTR_ROW_OPERATION_PTR SQL_DESC_ARRAY_STATUS_PTR ARD
SQL_ATTR_ROW_STATUS_PTR SQL_DESC_ARRAY_STATUS_PTR IRD
SQL_ATTR_ROWS_FETCHED_PTR SQL_DESC_ROWS_PROCESSED_PTR IRD

ステートメント属性

現在定義されている属性と、その属性が導入された ODBC のバージョンを次の表に示します。さまざまなデータ ソースを利用するために、ドライバーによってより多くの属性が定義されることが予想されます。 属性の範囲は ODBC によって予約されています。ドライバー開発者は、オープン グループから独自のドライバー固有の使用のために値を予約する必要があります。 詳細については、「ドライバー固有のデータ型、記述子の種類、情報の種類、診断型、および属性」を参照してください。

Attribute ValuePtr コンテンツ
SQL_ATTR_APP_PARAM_DESC (ODBC 3.0) ステートメント ハンドル上の SQLExecute および SQLExecDirect への後続の呼び出しに対する APD へのハンドル。 この属性の初期値は、ステートメントが最初に割り当てられたときに暗黙的に割り当てられた記述子です。 この属性の値がSQL_NULL_DESCに設定されている場合、または最初に記述子に割り当てられたハンドルの場合、ステートメント ハンドルに以前に関連付けられていた明示的に割り当てられた APD ハンドルは関連付け解除され、ステートメント ハンドルは暗黙的に割り当てられた APD ハンドルに戻ります。

この属性は、別のステートメントに対して暗黙的に割り当てられた記述子ハンドル、または同じステートメントに暗黙的に設定された別の記述子ハンドルに設定することはできません。暗黙的に割り当てられた記述子ハンドルは、複数のステートメントまたは記述子ハンドルに関連付けることはできません。
SQL_ATTR_APP_ROW_DESC (ODBC 3.0) ステートメント ハンドルの後続のフェッチに対する ARD へのハンドル。 この属性の初期値は、ステートメントが最初に割り当てられたときに暗黙的に割り当てられた記述子です。 この属性の値がSQL_NULL_DESCに設定されている場合、または最初に記述子に割り当てられたハンドルの場合、ステートメント ハンドルに以前に関連付けられていた明示的に割り当てられた ARD ハンドルは関連付け解除され、ステートメント ハンドルは暗黙的に割り当てられた ARD ハンドルに戻ります。

この属性は、別のステートメントに対して暗黙的に割り当てられた記述子ハンドル、または同じステートメントに暗黙的に設定された別の記述子ハンドルに設定することはできません。暗黙的に割り当てられた記述子ハンドルは、複数のステートメントまたは記述子ハンドルに関連付けることはできません。
SQL_ATTR_ASYNC_ENABLE (ODBC 1.0) 指定したステートメントで呼び出された関数を非同期に実行するかどうかを指定する SQLULEN 値。

SQL_ASYNC_ENABLE_OFF = ステートメント レベルの非同期実行のサポートを無効にします (既定)。

SQL_ASYNC_ENABLE_ON = ステートメント レベルの非同期実行のサポートを有効にします。

詳細については、「非同期実行 (ポーリング メソッド)」を参照してください。

ステートメント レベルの非同期実行をサポートするドライバーの場合、ステートメント属性SQL_ATTR_ASYNC_ENABLEは読み取り専用です。 その値は、ステートメント ハンドルが割り当てられた時点で同じ名前の接続レベル属性の値と同じです。

SQLSetStmtAttr を呼び出して、SQL_ASYNC_MODE InfoType が SQLSTATE HYC00 を返すSQL_AM_CONNECTIONを返すときにSQL_ATTR_ASYNC_ENABLEを設定します (省略可能な機能は実装されていません)。 詳細については、「 SQLSetConnectAttr 関数 を参照してください。
SQL_ATTR_ASYNC_STMT_EVENT (ODBC 3.8) イベント ハンドルである SQLPOINTER 値。

非同期関数の完了通知は、 SQLSetStmtAttr を呼び出して SQL_ATTR_ASYNC_STMT_EVENT 属性を設定し、イベント ハンドルを指定することで有効になります。
SQL_ATTR_ASYNC_STMT_PCALLBACK (ODBC 3.8) 非同期コールバック関数への SQLPOINTER。

ドライバー マネージャーのみが、この属性を持つドライバーの SQLSetStmtAttr 関数を呼び出すことができます。
SQL_ATTR_ASYNC_STMT_PCONTEXT (ODBC 3.8) コンテキスト構造への SQLPOINTER

ドライバー マネージャーのみが、この属性を持つドライバーの SQLSetStmtAttr 関数を呼び出すことができます。
SQL_ATTR_CONCURRENCY (ODBC 2.0) カーソルのコンカレンシーを指定する SQLULEN 値:

SQL_CONCUR_READ_ONLY = Cursor は読み取り専用です。 更新は許可されません。

SQL_CONCUR_LOCK = カーソルは、行を確実に更新できるように、ロックの最下位レベルを使用します。

SQL_CONCUR_ROWVER = カーソルはオプティミスティック コンカレンシー制御を使用し、SQLBase ROWID や Sybase TIMESTAMP などの行バージョンを比較します。

SQL_CONCUR_VALUES = Cursor はオプティミスティック コンカレンシー制御を使用し、値を比較します。

SQL_ATTR_CONCURRENCYの既定値は SQL_CONCUR_READ_ONLY です。

この属性は、開いているカーソルには指定できません。 詳細については、「 Concurrency 型」を参照してください。

SQL_ATTR_CURSOR_TYPE Attribute がSQL_ATTR_CONCURRENCYの現在の値をサポートしていない型に変更された場合、SQL_ATTR_CONCURRENCYの値は実行時に変更され、 SQLExecDirect または SQLPrepare が呼び出されたときに発行される警告が表示されます。

ドライバーが SELECT FOR UPDATE ステートメントをサポートしていて、SQL_ATTR_CONCURRENCYの値が SQL_CONCUR_READ_ONLY に設定されている間にこのようなステートメントが実行された場合は、エラーが返されます。 SQL_ATTR_CONCURRENCYの値が、SQL_ATTR_CURSOR_TYPEの現在の値ではなく、SQL_ATTR_CURSOR_TYPEの値に対してドライバーがサポートする値に変更された場合、SQL_ATTR_CURSOR_TYPEの値は実行時に変更され、SQLSTATE 01S02 (オプション値が変更されました) は、 SQLExecDirect または SQLPrepare が呼び出されたときに発行されます。

指定したコンカレンシーがデータ ソースでサポートされていない場合、ドライバーは別のコンカレンシーに置き換え、SQLSTATE 01S02 (オプション値の変更) を返します。 SQL_CONCUR_VALUESの場合、ドライバーはSQL_CONCUR_ROWVERを置き換えます。その逆も同様です。 SQL_CONCUR_LOCKの場合、ドライバーは順番に、SQL_CONCUR_ROWVERまたはSQL_CONCUR_VALUESを置き換える。 置換された値の有効性は、実行時間までチェックされません。

SQL_ATTR_CONCURRENCYとその他のカーソル属性の関係の詳細については、「 Cursor 特性とカーソルの種類」を参照してください。
SQL_ATTR_CURSOR_SCROLLABLE (ODBC 3.0) アプリケーションが必要とするサポートのレベルを指定する SQLULEN 値。 この属性を設定すると、以降の SQLExecDirect および SQLExecute の呼び出しに影響します。

SQL_NONSCROLLABLE = ステートメント ハンドルにスクロール可能なカーソルは必要ありません。 アプリケーションがこのハンドルで SQLFetchScroll を呼び出す場合、 FetchOrientation の有効な値はSQL_FETCH_NEXTだけです。 これが既定です。

SQL_SCROLLABLE = ステートメント ハンドルにはスクロール可能なカーソルが必要です。 SQLFetchScrollを呼び出すとき、アプリケーションは任意の有効な値FetchOrientationを指定して、シーケンシャル モード以外のモードでカーソル位置を設定できます。

スクロール可能なカーソルの詳細については、「 スクロール可能なカーソル」を参照してください。 SQL_ATTR_CURSOR_SCROLLABLEとその他のカーソル属性の関係の詳細については、「 Cursor の特性とカーソルの種類」を参照してください。
SQL_ATTR_CURSOR_SENSITIVITY (ODBC 3.0) ステートメント ハンドル上のカーソルが、別のカーソルによって結果セットに加えられた変更を表示するかどうかを指定する SQLULEN 値。 この属性を設定すると、以降の SQLExecDirect および SQLExecute の呼び出しに影響します。 アプリケーションは、この属性の値を読み取り戻して、アプリケーションによって最近設定された初期状態またはその状態を取得できます。

SQL_UNSPECIFIED = カーソルの種類と、ステートメント ハンドル上のカーソルが別のカーソルによって結果セットに加えられた変更を表示するかどうかは指定されていません。 ステートメント ハンドル上のカーソルは、そのような変更の一部またはすべてを表示しない場合があります。 これが既定です。

SQL_INSENSITIVE = ステートメント ハンドル上のすべてのカーソルは、他のカーソルによる変更を反映せずに結果セットを表示します。 非依存カーソルは読み取り専用です。 これは、読み取り専用のコンカレンシーを持つ静的カーソルに対応します。

SQL_SENSITIVE = ステートメント ハンドル上のすべてのカーソルは、別のカーソルによって結果セットに加えられたすべての変更を表示します。

SQL_ATTR_CURSOR_SENSITIVITYとその他のカーソル属性の関係の詳細については、「 Cursor 特性とカーソルの種類を参照してください。
SQL_ATTR_CURSOR_TYPE (ODBC 2.0) カーソルの種類を指定する SQLULEN 値:

SQL_CURSOR_FORWARD_ONLY = カーソルは前方にのみスクロールします。

SQL_CURSOR_STATIC = 結果セット内のデータは静的です。

SQL_CURSOR_KEYSET_DRIVEN = ドライバーは、SQL_ATTR_KEYSET_SIZE ステートメント属性で指定された行数のキーを保存して使用します。

SQL_CURSOR_DYNAMIC = ドライバーは、行セット内の行のキーのみを保存して使用します。

既定値は SQL_CURSOR_FORWARD_ONLY です。 この属性は、SQL ステートメントの準備後に指定できません。

指定したカーソルの種類がデータ ソースでサポートされていない場合、ドライバーは別のカーソルの種類に置き換え、SQLSTATE 01S02 (オプション値が変更されました) を返します。 混合カーソルまたは動的カーソルの場合、ドライバーは、キーセットドリブンカーソルまたは静的カーソルを順番に置き換える。 キーセットドリブン カーソルの場合、ドライバーは静的カーソルに置き換わります。

スクロール可能なカーソルの種類の詳細については、「 スクロール可能なカーソルの種類を参照してください。 SQL_ATTR_CURSOR_TYPEとその他のカーソル属性の関係の詳細については、「 Cursor の特性とカーソルの種類を参照してください。
SQL_ATTR_ENABLE_AUTO_IPD (ODBC 3.0) IPD の自動作成を実行するかどうかを指定する SQLULEN 値。

SQL_TRUE = SQLPrepare の呼び出し後に IPD の自動作成を有効にします。 SQL_FALSE = SQLPrepare の呼び出し後に IPD の自動作成をオフにします。 (アプリケーションは引き続き を呼び出して IPD フィールド情報を取得できますSQLDescribeParam(サポートされている場合)。ステートメント属性SQL_ATTR_ENABLE_AUTO_IPDの既定値はSQL_FALSE。 詳細については、「 IPD の自動作成」を参照してください。
SQL_ATTR_FETCH_BOOKMARK_PTR (ODBC 3.0) バイナリ ブックマーク値を指す SQLLEN * です。 sqlFetchScrollがSQL_FETCH_BOOKMARKと等しいfFetchOrientation呼び出されると、ドライバーはこのフィールドからブックマーク値を取得します。 このフィールドの既定値は null ポインターです。 詳細については、「 ブックマークによるスクロール」を参照してください。

このフィールドが指す値は、行セット バッファーにキャッシュされたブックマークを使用する、 SQLBulkOperations でのブックマークによる削除、ブックマークによる更新、またはブックマーク操作によるフェッチには使用されません。
SQL_ATTR_IMP_PARAM_DESC (ODBC 3.0) IPD へのハンドル。 この属性の値は、ステートメントが最初に割り当てられたときに割り当てられた記述子です。 アプリケーションでこの属性を設定することはできません。

この属性は、 SQLGetStmtAttr への呼び出しによって取得できますが、 SQLSetStmtAttr の呼び出しでは設定できません。
SQL_ATTR_IMP_ROW_DESC (ODBC 3.0) IRD へのハンドル。 この属性の値は、ステートメントが最初に割り当てられたときに割り当てられた記述子です。 アプリケーションでこの属性を設定することはできません。

この属性は、 SQLGetStmtAttr への呼び出しによって取得できますが、 SQLSetStmtAttr の呼び出しでは設定できません。
SQL_ATTR_KEYSET_SIZE (ODBC 2.0) キーセットドリブン カーソルのキーセット内の行数を指定する SQLULEN。 キーセットのサイズが 0 (既定値) の場合、カーソルは完全にキーセットドリブンです。 キーセットのサイズが 0 より大きい場合、カーソルは混在します (キーセット内ではキーセット駆動型で、キーセットの外部では動的)。 既定のキーセット サイズは 0 です。 キーセットドリブン カーソルの詳細については、「 Keyset ドリブン カーソル」を参照してください。

指定したサイズがキーセットの最大サイズを超えた場合、ドライバーはそのサイズを置き換え、SQLSTATE 01S02 (オプション値が変更されました) を返します。

SQLFetch または SQLFetchScroll は、キーセットのサイズが 0 より大きく、行セット サイズより小さい場合にエラーを返します。
SQL_ATTR_MAX_LENGTH (ODBC 1.0) ドライバーが文字またはバイナリ列から返すデータの最大量を指定する SQLULEN 値。 ValuePtr が使用可能なデータの長さより小さい場合、SQLFetch または SQLGetData はデータを切り捨ててSQL_SUCCESSを返します。 ValuePtr が 0 (既定値) の場合、ドライバーは使用可能なすべてのデータを返そうとします。

指定した長さが、データ ソースが返すことができるデータの最小量より小さいか、データ ソースが返すことができるデータの最大量より大きい場合、ドライバーはその値を置き換え、SQLSTATE 01S02 を返します (オプション値が変更されました)。

この属性の値は、開いているカーソルで設定できます。ただし、この設定はすぐには有効にならない場合があります。この場合、ドライバーは SQLSTATE 01S02 (オプション値の変更) を返し、属性を元の値にリセットします。

この属性はネットワーク トラフィックを減らすことを目的としており、複数層ドライバーのデータ ソース (ドライバーではなく) がデータ ソースを実装できる場合にのみサポートする必要があります。 このメカニズムは、データを切り捨てるアプリケーションでは使用しないでください。受信したデータを切り捨てるには、アプリケーションで、SQLBindCol または SQLGetDataBufferLength 引数に最大バッファー長を指定する必要があります。
SQL_ATTR_MAX_ROWS (ODBC 1.0) SELECT ステートメントのアプリケーションに返される行の最大数に対応する SQLULEN 値。 *ValuePtr が 0 (既定値) の場合、ドライバーはすべての行を返します。

この属性は、ネットワーク トラフィックを減らすことを目的としています。 概念的には、結果セットの作成時に適用され、結果セットが最初の ValuePtr 行に制限されます。 結果セットの行数が ValuePtr を超える場合、結果セットは切り捨てられます。

SQL_ATTR_MAX_ROWSは、カタログ関数によって返されるものも含め、 Statement のすべての結果セットに適用されます。 SQL_ATTR_MAX_ROWSは、カーソル行数の値の最大値を設定します。

SQL_ATTR_MAX_ROWSが適切に実装されることを保証できない場合、ドライバーは、 SQLFetch または SQLFetchScroll (結果セットのサイズ制限をデータ ソースで実装できない場合) のSQL_ATTR_MAX_ROWS動作をエミュレートしないでください。

これは、select ステートメント (カタログ関数など) 以外のステートメントにSQL_ATTR_MAX_ROWSが適用されるかどうかをドライバーで定義します。

この属性の値は、開いているカーソルで設定できます。ただし、この設定はすぐには有効にならない場合があります。この場合、ドライバーは SQLSTATE 01S02 (オプション値の変更) を返し、属性を元の値にリセットします。
SQL_ATTR_METADATA_ID (ODBC 3.0) カタログ関数の文字列引数の処理方法を決定する SQLULEN 値。

SQL_TRUE場合、カタログ関数の文字列引数は識別子として扱われます。 このケースは重要ではありません。 削除されていない文字列の場合、ドライバーは末尾のスペースを削除し、文字列は大文字に折りたたまれます。 区切られた文字列の場合、ドライバーは先頭または末尾のスペースを削除し、区切り記号の間にあるものを文字どおり受け取ります。 これらの引数のいずれかが null ポインターに設定されている場合、関数は SQL_ERROR および SQLSTATE HY009 を返します (null ポインターの使用は無効です)。

SQL_FALSE場合、カタログ関数の文字列引数は識別子として扱われません。 このケースは重要です。 引数に応じて、文字列検索パターンを含めることができます。

既定値は SQL_FALSE です。

値のリストを受け取るSQLTablesTableType引数は、この属性の影響を受けません。

SQL_ATTR_METADATA_IDは、接続レベルで設定することもできます。 (it および SQL_ATTR_ASYNC_ENABLE は、接続属性でもある唯一のステートメント属性です)。

詳細については、「カタログ関数の引数」を参照してください。
SQL_ATTR_NOSCAN (ODBC 1.0) ドライバーが SQL 文字列でエスケープ シーケンスをスキャンする必要があるかどうかを示す SQLULEN 値。

SQL_NOSCAN_OFF = ドライバーは、エスケープ シーケンス (既定値) の SQL 文字列をスキャンします。

SQL_NOSCAN_ON = ドライバーは SQL 文字列のエスケープ シーケンスをスキャンしません。 代わりに、ドライバーはステートメントをデータ ソースに直接送信します。

詳細については、「ODBC Escape シーケンス」を参照してください。
SQL_ATTR_PARAM_BIND_OFFSET_PTR (ODBC 3.0) 動的パラメーターのバインドを変更するためにポインターに追加されたオフセットを指す SQLULEN * 値。 このフィールドが null 以外の場合、ドライバーはポインターを逆参照し、記述子レコードの各遅延フィールド (SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、SQL_DESC_OCTET_LENGTH_PTR) に逆参照された値を追加し、バインド時に新しいポインター値を使用します。 既定では null に設定されています。

バインド オフセットは常に、SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、およびSQL_DESC_OCTET_LENGTH_PTRフィールドに直接追加されます。 オフセットが別の値に変更された場合でも、新しい値は記述子フィールドの値に直接追加されます。 新しいオフセットは、フィールド値と以前のオフセットには追加されません。

詳細については、「 パラメーター バインド オフセット」を参照してください。

このステートメント属性を設定すると、APD ヘッダーの SQL_DESC_BIND_OFFSET_PTR フィールドが設定されます。
SQL_ATTR_PARAM_BIND_TYPE (ODBC 3.0) 動的パラメーターに使用するバインドの向きを示す SQLULEN 値。

このフィールドはSQL_PARAM_BIND_BY_COLUMN (既定値) に設定され、列方向のバインドを選択します。

行方向のバインドを選択するために、このフィールドは、一連の動的パラメーターにバインドされる構造体またはバッファーのインスタンスの長さに設定されます。 この長さは、バインドされたパラメーターのアドレスが指定された長さでインクリメントされるときに、結果が次のパラメーター セット内の同じパラメーターの先頭を指すようにするために、バインドされたすべてのパラメーターと構造体またはバッファーの埋め込みにスペースを含める必要があります。 ANSI C で sizeof 演算子を使用する場合、この動作が保証されます。

詳細については、「 パラメーターの配列のバインド」を参照してください。

このステートメント属性を設定すると、APD ヘッダーの SQL_DESC_ BIND_TYPE フィールドが設定されます。
SQL_ATTR_PARAM_OPERATION_PTR (ODBC 3.0) SQL ステートメントの実行中にパラメーターを無視するために使用される SQLUSMALLINT 値の配列を指す SQLUSMALLINT * 値。 各値は、SQL_PARAM_PROCEED (実行するパラメーター) またはSQL_PARAM_IGNORE (パラメーターを無視する場合) のいずれかに設定されます。

APD 内のSQL_DESC_ARRAY_STATUS_PTRが指す配列の状態値を SQL_PARAM_IGNORE に設定することで、処理中にパラメーターのセットを無視できます。 状態値が SQL_PARAM_PROCEED に設定されている場合、または配列内の要素が設定されていない場合、パラメーターのセットが処理されます。

このステートメント属性は null ポインターに設定できます。この場合、ドライバーはパラメーターの状態値を返しません。 この属性はいつでも設定できますが、新しい値は次回 SQLExecDirect または SQLExecute が呼び出されるまで使用されません。

バインドされたパラメーターがない場合、この属性は無視されます。

詳細については、「 パラメーターの配列の使用」を参照してください。

このステートメント属性を設定すると、APD ヘッダーの SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。
SQL_ATTR_PARAM_STATUS_PTR (ODBC 3.0) SQLExecute または SQLExecDirect の呼び出し後のパラメーター値の各行の状態情報を含む SQLUSMALLINT 値の配列を指す SQLUSMALLINT * 値。 このフィールドは、PARAMSET_SIZEが 1 より大きい場合にのみ必要です。

状態の値には、次の値を含めることができます。

SQL_PARAM_SUCCESS: このパラメーター セットに対して SQL ステートメントが正常に実行されました。

SQL_PARAM_SUCCESS_WITH_INFO: このパラメーター セットに対して SQL ステートメントが正常に実行されました。ただし、警告情報は診断データ構造で使用できます。

SQL_PARAM_ERROR: このパラメーター セットの処理中にエラーが発生しました。 追加のエラー情報は、診断データ構造で確認できます。

SQL_PARAM_UNUSED: このパラメーター セットは使用されていませんでした。これは、以前のパラメーター セットによって、さらに処理が中止されたエラーが発生したこと、またはSQL_ATTR_PARAM_OPERATION_PTRで指定された配列内のパラメーターセットに対してSQL_PARAM_IGNOREが設定されたことが原因である可能性があります。

SQL_PARAM_DIAG_UNAVAILABLE: ドライバーはパラメーターの配列をモノリシック単位として扱うので、このレベルのエラー情報は生成されません。

このステートメント属性は null ポインターに設定できます。この場合、ドライバーはパラメーターの状態値を返しません。 この属性はいつでも設定できますが、新しい値は、次回 SQLExecute または SQLExecDirect が呼び出されるまで使用されません。 この属性を設定すると、ドライバーによって実装される出力パラメーターの動作に影響する可能性があることに注意してください。

詳細については、「 パラメーターの配列の使用」を参照してください。

このステートメント属性を設定すると、IPD ヘッダーの SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。
SQL_ATTR_PARAMS_PROCESSED_PTR (ODBC 3.0) エラー・セットを含め、処理されたパラメーターのセットの数を返すバッファーを指す SQLULEN * レコード・フィールド。 null ポインターの場合、数値は返されません。

このステートメント属性を設定すると、IPD ヘッダーの SQL_DESC_ROWS_PROCESSED_PTR フィールドが設定されます。

この属性が指すバッファーを埋める SQLExecDirect または SQLExecute の呼び出しがSQL_SUCCESSまたはSQL_SUCCESS_WITH_INFOを返さない場合、バッファーの内容は未定義になります。

詳細については、「 パラメーターの配列の使用」を参照してください。
SQL_ATTR_PARAMSET_SIZE (ODBC 3.0) 各パラメーターの値の数を指定する SQLULEN 値。 SQL_ATTR_PARAMSET_SIZEが 1 より大きい場合、APD のSQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、およびSQL_DESC_OCTET_LENGTH_PTRは配列を指します。 各配列のカーディナリティは、このフィールドの値と等しくなります。

バインドされたパラメーターがない場合、この属性は無視されます。

詳細については、「 パラメーターの配列の使用」を参照してください。

このステートメント属性を設定すると、APD ヘッダーの SQL_DESC_ARRAY_SIZE フィールドが設定されます。
SQL_ATTR_QUERY_TIMEOUT (ODBC 1.0) アプリケーションに戻るまでの SQL ステートメントの実行を待機する秒数に対応する SQLULEN 値。 ValuePtr が 0 (既定値) の場合、タイムアウトはありません。

指定したタイムアウトがデータ ソースの最大タイムアウトを超えた場合、または最小タイムアウトより小さい場合、 SQLSetStmtAttr はその値に置き換わり、SQLSTATE 01S02 (オプション値が変更されました) を返します。

SELECT ステートメントがタイムアウトした場合にステートメントを再利用するために、アプリケーションは SQLCloseCursor を呼び出す必要はありません。

このステートメント属性で設定されたクエリ タイムアウトは、同期モードと非同期モードの両方で有効です。
SQL_ATTR_RETRIEVE_DATA (ODBC 2.0) SQLULEN 値:

SQL_RD_ON = SQLFetchScroll ODBC 3.x では、カーソルを指定した位置に置いた後にデータを取得 SQLFetch 。 これが既定です。

SQL_RD_OFF = SQLFetchScroll ODBC 3.x では、 SQLFetch では カーソルを置いた後にデータを取得しません。

SQL_RETRIEVE_DATAを SQL_RD_OFF に設定することで、アプリケーションは行が存在することを確認したり、行のブックマークを取得したりすることができ、行の取得のオーバーヘッドは発生しません。 詳細については、「 行のクロールとフェッチ」を参照してください。

この属性の値は、開いているカーソルで設定できます。ただし、この設定はすぐには有効にならない場合があります。この場合、ドライバーは SQLSTATE 01S02 (オプション値の変更) を返し、属性を元の値にリセットします。
SQL_ATTR_ROW_ARRAY_SIZE (ODBC 3.0) SQLFetch または SQLFetchScroll の各呼び出しによって返される行数を指定する SQLULEN 値。 これは、 SQLBulkOperations の一括ブックマーク操作で使用されるブックマーク配列内の行数でもあります。 既定値は 1です。

指定した行セット サイズがデータ ソースでサポートされている最大行セット サイズを超えた場合、ドライバーはその値を置き換え、SQLSTATE 01S02 (オプション値が変更されました) を返します。

詳細については、「 Rowset サイズ」を参照してください。

このステートメント属性を設定すると、ARD ヘッダーの SQL_DESC_ARRAY_SIZE フィールドが設定されます。
SQL_ATTR_ROW_BIND_OFFSET_PTR (ODBC 3.0) 列データのバインドを変更するためにポインターに追加されたオフセットを指す SQLULEN * 値。 このフィールドが null 以外の場合、ドライバーはポインターを逆参照し、記述子レコードの各遅延フィールド (SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、SQL_DESC_OCTET_LENGTH_PTR) に逆参照された値を追加し、バインド時に新しいポインター値を使用します。 既定では null に設定されています。

このステートメント属性を設定すると、ARD ヘッダーの SQL_DESC_BIND_OFFSET_PTR フィールドが設定されます。
SQL_ATTR_ROW_BIND_TYPE (ODBC 1.0) 関連付けられたステートメントで、 SQLFetch または SQLFetchScroll を呼び出すときに使用するバインディングの向きを設定する SQLULEN 値。 列方向のバインドは、値を SQL_BIND_BY_COLUMN に設定して選択します。 行方向のバインドは、値を構造体の長さ、または結果列がバインドされるバッファーのインスタンスに設定することによって選択されます。

長さが指定されている場合は、バインドされた列のアドレスが指定された長さでインクリメントされるときに、結果が次の行の同じ列の先頭を指すように、バインドされているすべての列のスペースと構造体またはバッファーのパディングを含める必要があります。 ANSI C で構造体または共用体で sizeof 演算子を使用する場合、この動作は保証されます。

列方向のバインドは、 SQLFetch および SQLFetchScroll の既定のバインド方向です。

詳細については、「 ブロック カーソルで使用する列のバインドを参照してください。

このステートメント属性を設定すると、ARD ヘッダーの SQL_DESC_BIND_TYPE フィールドが設定されます。
SQL_ATTR_ROW_NUMBER (ODBC 2.0) 結果セット全体の現在の行の数である SQLULEN 値。 現在の行の数を特定できない場合、または現在の行がない場合、ドライバーは 0 を返します。

この属性は、 SQLGetStmtAttr への呼び出しによって取得できますが、 SQLSetStmtAttr の呼び出しでは設定できません。
SQL_ATTR_ROW_OPERATION_PTR (ODBC 3.0) SQLSetPos を使用した一括操作中に行を無視するために使用される SQLUSMALLINT 値の配列を指す SQLUSMALLINT * 値。 各値は、SQL_ROW_PROCEED (一括操作に含める行) またはSQL_ROW_IGNORE (一括操作から除外する行) のいずれかに設定されます。 ( の呼び出し中にこの配列を使用して行を無視することはできませんSQLBulkOperations.)

このステートメント属性は null ポインターに設定できます。この場合、ドライバーは行の状態値を返しません。 この属性はいつでも設定できますが、新しい値は次回 SQLSetPos が呼び出されるまで使用されません。

詳細については、「 SQLSetPos を使用した行セット内の行の追加 および SQLSetPos を使用した行セットの行の 削除を参照してください。

このステートメント属性を設定すると、ARD の SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。
SQL_ATTR_ROW_STATUS_PTR (ODBC 3.0) SQLFetch または SQLFetchScroll の呼び出し後に行ステータス値を含む SQLUSMALLINT 値の配列を指す SQLUSMALLINT * 値。 配列には、行セット内の行と同じ数の要素があります。

このステートメント属性は null ポインターに設定できます。この場合、ドライバーは行の状態値を返しません。 この属性はいつでも設定できますが、新しい値は次回 SQLBulkOperationsSQLFetchSQLFetchScroll、または SQLSetPos が呼び出されるまで使用されません。

詳細については、「 フェッチされた行数と状態を参照してください。

このステートメント属性を設定すると、IRD ヘッダーの SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。

この属性は、ODBC 2.x ドライバーによって、SQLExtendedFetch の呼び出しで rgbRowStatus 配列にマップされます。
SQL_ATTR_ROWS_FETCHED_PTR (ODBC 3.0) SQLFetch または SQLFetchScroll の呼び出し後にフェッチされた行数を返すバッファーを指す SQLULEN * 値; SQL_REFRESHの Operation 引数を持つSQLSetPosの呼び出しによって実行された一括操作の影響を受ける行数、またはSQLBulkOperationsによって実行された一括操作の影響を受ける行の数。 この数には、エラー行が含まれます。

詳細については、「 フェッチされた行数と状態を参照してください。

このステートメント属性を設定すると、IRD ヘッダーの SQL_DESC_ROWS_PROCESSED_PTR フィールドが設定されます。

この属性 指すバッファーを埋めるSQLFetch または SQLFetchScroll への呼び出しがSQL_SUCCESSまたはSQL_SUCCESS_WITH_INFOを返さない場合、バッファーの内容は未定義になります。
SQL_ATTR_SIMULATE_CURSOR (ODBC 2.0) 配置された更新および削除ステートメントをシミュレートするドライバーが、このようなステートメントが 1 つの行にのみ影響することを保証するかどうかを指定する SQLULEN 値。

配置された更新および削除ステートメントをシミュレートするために、ほとんどのドライバーは、現在の行の各列の値を指定する WHERE 句を含む検索された UPDATE または DELETE ステートメントを構築します。 これらの列が一意のキーを構成しない限り、このようなステートメントは複数の行に影響を与える可能性があります。

このようなステートメントが 1 つの行にのみ影響することを保証するために、ドライバーは一意のキーの列を決定し、これらの列を結果セットに追加します。 結果セット内の列が一意のキーを構成することがアプリケーションで保証されている場合、ドライバーは一意のキーを構成する必要はありません。 これにより、実行時間が短縮される可能性があります。

SQL_SC_NON_UNIQUE = ドライバーは、シミュレートされた配置された更新または削除ステートメントが 1 つの行にのみ影響することを保証しません。これを行うのはアプリケーションの責任です。 ステートメントが複数の行に影響を与える場合、 SQLExecuteSQLExecDirect、または SQLSetPos は SQLSTATE 01001 (カーソル操作の競合) を返します。

SQL_SC_TRY_UNIQUE = ドライバーは、シミュレートされた配置された更新または削除ステートメントが 1 つの行にのみ影響することを保証しようとします。 ドライバーは、一意のキーがない場合など、複数の行に影響を与える可能性がある場合でも、常にこのようなステートメントを実行します。 ステートメントが複数の行に影響を与える場合、 SQLExecuteSQLExecDirect、または SQLSetPos は SQLSTATE 01001 (カーソル操作の競合) を返します。

SQL_SC_UNIQUE = ドライバーは、シミュレートされた位置指定の更新または削除ステートメントが 1 つの行にのみ影響することを保証します。 ドライバーが特定のステートメントに対してこれを保証できない場合、 SQLExecDirect または SQLPrepare はエラーを返します。

データ ソースが配置された更新および削除ステートメントのネイティブ SQL サポートを提供し、ドライバーがカーソルをシミュレートしない場合、SQL_SC_UNIQUEがSQL_SIMULATE_CURSORに対して要求されたときにSQL_SUCCESSが返されます。 SQL_SC_TRY_UNIQUEまたはSQL_SC_NON_UNIQUEが要求された場合、SQL_SUCCESS_WITH_INFOが返されます。 データ ソースがSQL_SC_TRY_UNIQUE レベルのサポートを提供し、ドライバーがサポートしていない場合は、SQL_SC_TRY_UNIQUEに対してSQL_SUCCESSが返され、SQL_SC_NON_UNIQUEに対してSQL_SUCCESS_WITH_INFOが返されます。

指定したカーソル シミュレーションの種類がデータ ソースでサポートされていない場合、ドライバーは別のシミュレーションの種類を置き換え、SQLSTATE 01S02 (オプション値が変更されました) を返します。 SQL_SC_UNIQUEの場合、ドライバーは順番に、SQL_SC_TRY_UNIQUEまたはSQL_SC_NON_UNIQUEを置き換える。 SQL_SC_TRY_UNIQUEの場合、ドライバーはSQL_SC_NON_UNIQUEを置き換える。

既定値は SQL_SC_UNIQUE です。

詳細については、「 配置された更新ステートメントと Delete ステートメントのシミュレーションを参照してください。
SQL_ATTR_USE_BOOKMARKS (ODBC 2.0) アプリケーションがカーソルでブックマークを使用するかどうかを指定する SQLULEN 値。

SQL_UB_OFF = オフ (既定値)

SQL_UB_VARIABLE = アプリケーションはカーソル付きのブックマークを使用し、ドライバーはサポートされている場合は可変長ブックマークを提供します。 ODBC 3.x では、SQL_UB_FIXEDは非推奨です。 ODBC 3.x アプリケーションでは、ODBC 2.x ドライバー (4 バイトの固定長ブックマークのみをサポート) を使用する場合でも、常に可変長ブックマークを使用する必要があります。 これは、固定長ブックマークが可変長ブックマークの特殊なケースに過ぎないためです。 ODBC 2.x ドライバーを使用する場合、ドライバー マネージャーはSQL_UB_VARIABLEをSQL_UB_FIXEDにマップします。

カーソルでブックマークを使用するには、カーソルを開く前に、アプリケーションでSQL_UB_VARIABLE値でこの属性を指定する必要があります。

詳細については、「ブックマークの を取り込む」を参照してください。

[1] これらの関数は、記述子が実装記述子であり、アプリケーション記述子ではない場合にのみ非同期的に呼び出すことができます。

Column-Wise バインディングRow-Wise バインディング」を参照

情報 参照トピック
ステートメント処理の取り消し SQLCancel 関数
接続属性の設定を返す SQLGetConnectAttr 関数
ステートメント属性の設定を返す SQLGetStmtAttr 関数
接続属性の設定 SQLSetConnectAttr 関数
記述子の単一フィールドの設定 SQLSetDescField 関数

参照

ODBC API リファレンス
ODBC ヘッダー ファイル