游标滚动性

游标的滚动性指游标在结果集上的移动能力。

神通数据库 ODBC 中滚动性的可选设置有: SCROLLABLE和NON-SCROLLABLE。在SCROLLABLE的 状态下,游标可以在结果集上前后自由移动或直接定位到以行号标志的某一行, 相应的SQLFetchScroll的FetchOrientation选项可用任何有效值;而在NON-SCROLLABLE的状态下,游标只能从首行到末行依序移动, 此时SQLFetchScroll的FetchOrientation选项只能选择SQL_FETCH_NEXT;如果用户需要获取当前行之前的行,只能重新打开游标。

通过SQLSetStmtAttr并设置参数属性为 SQL_ATTR_CURSOR_SCROLLABLE ,可选值为 SQL_NONSCROLLABLE 和 SQL_SCROLLABLE 。

SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_SCROLLABLE, (void*)SQL_SCROLLABLE, SQL_IS_UINTEGER);

游标敏感性

游标的敏感性可以简单的理解为游标探知当前操作的结果集因自身或其他用户的操作发生的改变的能力

首先,任何游标都只对它正要获取的那些行上的变动敏感;至于那些已经获取的行上的变动,游标用户不会得到任何的通知,除非重新读取这些行。 其次,因为结果集数据变动的可见性受事务隔离级别的限制,因此游标的敏感性也受事务隔离级别的影响。

通过SQLSetStmtAttr并设置参数属性为SQL_ATTR_CURSOR_SENSITIVITY,可选值为SQL_UNSPECIFIED和SQL_INSENSITIVE,SQL_SENSITIVE。

SQL_UNSPECIFIED 默认值,当数据被其他游标进行了显著改动时,该游标可能进行变化,也可能不变;

而在INSENSITIVE的状态下,游标读到的结果集总是不变的,游标检索出来的数据不应该被其他客户端连接或游标的更新动作影响;

在SENSITIVE的状态下,游标对结果集上的更动敏感。

SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_SENSITIVITY, (void*)SQL_INSENSITIVE, SQL_IS_UINTEGER);