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 の値に応じて、ValuePtr は次のいずれかになります。
ODBC 記述子ハンドル。
SQLUINTEGER 値。
SQLULEN 値。
次のいずれかを指すポインター。
null で終わる文字列。
バイナリ バッファー。
SQLLEN、SQLULEN、または SQLUSMALLINT 型の値または配列。
ドライバー定義の値。
Attribute 引数がドライバー固有の値の場合、ValuePtr は符号付き整数である可能性があります。
StringLength
[入力]Attribute が ODBC で定義された属性で、ValuePtr が文字列またはバイナリ バッファーを指している場合、この引数は *ValuePtr の長さである必要があります。 属性が ODBC で定義された属性で、ValuePtr が整数の場合、StringLength は無視されます。
属性がドライバー定義の属性の場合、アプリケーションは、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の HandleType と StatementHandle のハンドルを使用して 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 | カーソル状態が無効 | 属性が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) StatementHandle に対して SQLExecute、SQLExecDirect、または SQLMoreResults が呼び出され、SQL_PARAM_DATA_AVAILABLE返されました。 この関数は、すべてのストリーミング パラメーターのデータが取得される前に呼び出されました。 (DM) 非同期実行関数が StatementHandle に対して呼び出され、この関数が呼び出されたときにまだ実行されていました。 (DM) StatementHandle に対して SQLExecute、SQLExecDirect、SQLBulkOperations、または SQLSetPos が呼び出され、SQL_NEED_DATA返されました。 この関数は、すべての実行時データ パラメーターまたは列に対してデータが送信される前に呼び出されました。 |
HY011 | 現在、属性を設定できません | 属性が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 | 属性値が無効です | 指定した属性値を指定すると、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 で設定される情報の形式は、指定された属性によって異なります。 SQLSetStmtAttr は、2 つの異なる形式 (文字列または整数値) のいずれかで属性情報を受け取ります。 それぞれの形式は属性の説明に記載されています。 この形式は、SQLGetStmtAttr の各属性に対して返される情報に適用されます。 SQLSetStmtAttr の ValuePtr 引数が指す文字列の長さは 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 マッピング」の「接続レベルでのステートメント オプションの設定」を参照してください。
記述子フィールドを設定するステートメント属性
多くのステートメント属性は、記述子のヘッダー フィールドに対応しています。 これらの属性を設定すると、実際には記述子フィールドが設定されます。 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 で SQLAllocHandle を呼び出して記述子ハンドルを割り当て、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 がSQL_AM_CONNECTION返されたときにSQL_ATTR_ASYNC_ENABLEを設定SQL_AM_CONNECTION SQLSTATE HYC00 を返します (省略可能な機能は実装されていません)。 詳細については、「 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 です。 この属性は、開いているカーソルには指定できません。 詳細については、「コンカレンシーの種類」を参照してください。 SQL_ATTR_CURSOR_TYPE属性が、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とその他のカーソル属性の関係の詳細については、「カーソルの特性」および「カーソルの種類」を参照してください。 |
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とその他のカーソル属性の関係の詳細については、「カーソルの特性とカーソルの種類」を参照してください 。 |
SQL_ATTR_CURSOR_SENSITIVITY (ODBC 3.0) | ステートメント ハンドル上のカーソルが、別のカーソルによって結果セットに加えられた変更を表示するかどうかを指定する SQLULEN 値。 この属性を設定すると、以降の SQLExecDirect および SQLExecute の呼び出しに影響します。 アプリケーションは、この属性の値を読み取り戻して、アプリケーションによって最近設定された初期状態またはその状態を取得できます。 SQL_UNSPECIFIED = カーソルの種類と、ステートメント ハンドル上のカーソルが別のカーソルによって結果セットに加えられた変更を表示するかどうかは指定されていません。 ステートメント ハンドル上のカーソルは、そのような変更の一部またはすべてを表示しない場合があります。 これが既定です。 SQL_INSENSITIVE = ステートメント ハンドル上のすべてのカーソルは、他のカーソルによる変更を反映せずに結果セットを表示します。 非依存カーソルは読み取り専用です。 これは、読み取り専用のコンカレンシーを持つ静的カーソルに対応します。 SQL_SENSITIVE = ステートメント ハンドル上のすべてのカーソルは、別のカーソルによって結果セットに加えられたすべての変更を表示します。 SQL_ATTR_CURSOR_SENSITIVITYとその他のカーソル属性の関係の詳細については、「カーソルの特性」および「カーソルの種類」を参照してください。 |
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とその他のカーソル属性の関係の詳細については、「カーソルの特性」および「カーソルの種類」を参照してください。 |
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 * です。 fFetchOrientation が SQL_FETCH_BOOKMARK と等しい SQLFetchScroll を呼び出すと、ドライバーはこのフィールドからブックマーク値を取得します。 このフィールドの既定値は 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 です。 キーセットドリブン カーソルの詳細については、「キーセットドリブン カーソル」を参照してください。 指定したサイズがキーセットの最大サイズを超えた場合、ドライバーはそのサイズを置き換え、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 または SQLGetData の BufferLength 引数に最大バッファー長を指定する必要があります。 |
SQL_ATTR_MAX_ROWS (ODBC 1.0) | SELECT ステートメントのアプリケーションに返される行の最大数に対応する SQLULEN 値。 *ValuePtr が 0 (既定値) の場合、ドライバーはすべての行を返します。 この属性は、ネットワーク トラフィックを減らすことを目的としています。 概念的には、結果セットの作成時に適用され、結果セットが最初 の ValuePtr 行に制限されます。 結果セット内の行数が ValuePtr より大きい場合、結果セットは切り捨てられます。 SQL_ATTR_MAX_ROWSは、カタログ関数によって返されるものも 含め、ステートメントのすべての結果セットに適用されます。 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 です。 値のリストを受け取る SQLTables の TableType 引数は、この属性の影響を受けません。 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 のエスケープ シーケンス」を参照してください。 |
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 (オプション値が変更されました) を返します。 詳細については、「行セットのサイズ」を参照してください。 このステートメント属性を設定すると、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 ポインターに設定できます。この場合、ドライバーは行の状態値を返しません。 この属性はいつでも設定できますが、新しい値は、次回 SQLBulkOperations、SQLFetch、SQLFetchScroll、または SQLSetPos が呼び出されるまで使用されません。 詳細については、「フェッチされた行数と状態」を参照してください。 このステートメント属性を設定すると、IRD ヘッダーの SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。 この属性は、SQLExtendedFetch の呼び出しで ODBC 2.x ドライバーによって rgbRowStatus 配列にマップされます。 |
SQL_ATTR_ROWS_FETCHED_PTR (ODBC 3.0) | SQLFetch または SQLFetchScroll の呼び出し後にフェッチされた行数を返すバッファーを指す SQLULEN * 値。operation 引数が SQL_REFRESH の 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 つの行にのみ影響することを保証しません。これを行うのはアプリケーションの責任です。 ステートメントが複数の行に影響を与える場合、 SQLExecute、 SQLExecDirect、または SQLSetPos は SQLSTATE 01001 (カーソル操作の競合) を返します。 SQL_SC_TRY_UNIQUE = ドライバーは、シミュレートされた配置された更新または削除ステートメントが 1 つの行にのみ影響することを保証しようとします。 ドライバーは、一意のキーがない場合など、複数の行に影響を与える可能性がある場合でも、常にこのようなステートメントを実行します。 ステートメントが複数の行に影響を与える場合、 SQLExecute、 SQLExecDirect、または 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 です。 詳細については、「位置指定された更新および削除ステートメントのシミュレート」を参照してください。 |
SQL_ATTR_USE_BOOKMARKS (ODBC 2.0) | アプリケーションがカーソルでブックマークを使用するかどうかを指定する SQLULEN 値。 SQL_UB_OFF = オフ (既定値) SQL_UB_VARIABLE = アプリケーションはカーソル付きのブックマークを使用し、ドライバーはサポートされている場合は可変長ブックマークを提供します。 SQL_UB_FIXEDは ODBC 3.x では非推奨です。 ODBC 3.x アプリケーションでは、ODBC 2.x ドライバー (4 バイトの固定長ブックマークのみをサポート) を使用する場合でも、常に可変長ブックマークを使用する必要があります。 これは、固定長ブックマークが可変長ブックマークの特殊なケースに過ぎないためです。 ODBC 2.x ドライバーを使用する場合、ドライバー マネージャーはSQL_UB_VARIABLEをSQL_UB_FIXEDにマップします。 カーソルでブックマークを使用するには、カーソルを開く前に、アプリケーションでSQL_UB_VARIABLE値でこの属性を指定する必要があります。 詳細については、「ブックマークの取得」を参照してください。 |
[1] これらの関数は、記述子が実装記述子であり、アプリケーション記述子ではない場合にのみ非同期的に呼び出すことができます。
列方向のバインドと行方向のバインドを参照してください。
関連する関数
情報 | 参照トピック |
---|---|
ステートメント処理の取り消し | SQLCancel 関数 |
接続属性の設定を返す | SQLGetConnectAttr 関数 |
ステートメント属性の設定を返す | SQLGetStmtAttr 関数 |
接続属性の設定 | SQLSetConnectAttr 関数 |
記述子の単一フィールドの設定 | SQLSetDescField 関数 |