ODBC では、カーソルのスクロール可能性と感度を指定することで、カーソルの動作を指定するための ISO オプションがサポートされています。 これらの動作は、 SQLSetStmtAttr の呼び出しでSQL_ATTR_CURSOR_SCROLLABLEオプションとSQL_ATTR_CURSOR_SENSITIVITY オプションを設定することによって指定されます。 SQL Server Native Client ODBC ドライバーは、次の特性を持つサーバー カーソルを要求することによって、これらのオプションを実装します。
| カーソルの動作設定 | 要求されたサーバー カーソルの特性 |
|---|---|
| SQL_SCROLLABLEとSQL_SENSITIVE | キーセットドリブン カーソルとバージョンベースのオプティミスティック コンカレンシー |
| SQL_SCROLLABLEとSQL_INSENSITIVE | 静的カーソルと読み取り専用コンカレンシー |
| SQL_SCROLLABLEとSQL_UNSPECIFIED | 静的カーソルと読み取り専用コンカレンシー |
| SQL_NONSCROLLABLEとSQL_SENSITIVE | 前方専用カーソルとバージョンベースのオプティミスティック コンカレンシー |
| SQL_NONSCROLLABLEとSQL_INSENSITIVE | 既定の結果セット (前方のみ、読み取り専用) |
| SQL_NONSCROLLABLEとSQL_UNSPECIFIED | 既定の結果セット (前方のみ、読み取り専用) |
バージョンベースのオプティミスティック コンカレンシーには、基になるテーブルの タイムスタンプ 列が必要です。 タイムスタンプ列のないテーブルに対してバージョンベースのオプティミスティック コンカレンシー制御が要求された場合、サーバーは値ベースのオプティミスティック コンカレンシーを使用します。
スクロール可能性
SQL_ATTR_CURSOR_SCROLLABLEが SQL_SCROLLABLE に設定されている場合、カーソルは SQLFetchScroll の FetchOrientation パラメーターのすべての異なる値をサポートします。 SQL_ATTR_CURSOR_SCROLLABLEが SQL_NONSCROLLABLE に設定されている場合、カーソルは SQL_FETCH_NEXT の FetchOrientation 値のみをサポートします。
感受性
SQL_ATTR_CURSOR_SENSITIVITYが SQL_SENSITIVE に設定されている場合、カーソルには、現在のユーザーによって行われた、または他のユーザーによってコミットされたデータの変更が反映されます。 SQL_ATTR_CURSOR_SENSITIVITYが SQL_INSENSITIVE に設定されている場合、カーソルはデータの変更を反映しません。