`
sswh
  • 浏览: 161860 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SQLServer数据库笔记(五)

阅读更多
游标

SQLServer向客户端返回查询结果有2种方式:默认结果集方式(又称作客户端游标或者流水游标)、或者是服务器游标方式。
默认结果集方式下(可以理解为串行方式?),客户端必须检索完(或者取消)所有查询数据,才能继续下一个操作。
服务器游标方式下(可以理解为并行方式?),客户端可以定义多个游标,交叉读取、定位不同游标中的数据。
在没有显式请求游标时,SQLServer返回默认结果集。
服务器游标用2种方式定义:T-SQL方式(用Declare cursor语句定义,也仅由T-SQL 语句管理);或者非T-SQL方式(通过客户端数据库驱动API调用,类似于RPC-远程过程调用方式);这两种方式下定义的游标不能混用。
联机丛书说明:
引用
默认结果集:SQL Server 用来将结果集返回到客户端的默认模式。行按照其放置在结果集中的顺序发送到客户端,且应用程序必须按此顺序对行进行处理。在执行连接中的某 SQL 语句之后,应用程序除了检索结果集中的行以外不能在连接上执行任何其它操作,直到已检索了所有的行。在结果集检索结束之前应用程序可以执行的唯一的其它操作是取消结果集的剩余部分。这是客户端从 SQL Server 获取行的最快方法。


在JDBC中,结果集的类型是由获取Statement时的参数决定的:
下面两条语句使用默认结果集,其他形式使用服务器游标。
Statement stmt = conn.createStatement();
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);


SQLServer支持三种服务器游标类型:静态游标、键集驱动游标、和动态游标。这3种游标都可以是只进的、或者是可滚动的。
静态游标:静态游标的完整结果集在游标打开时建立在 tempdb 中。静态游标总是按照游标打开时的原样显示结果集。SQL Server的静态游标始终是只读的。
键集驱动游标:打开游标时,SELECT 语句所选中行的主键保存在tempdb中。这样,打开游标后,其他insert的行,游标不可见;delete的行,将返回一个行缺少的状态;update的行,更新后的数据是可见的。
动态游标:动态游标与静态游标相对。当滚动游标时,动态游标反映结果集中所做的所有更改。结果集中的行数据值、顺序和成员在每次提取时都会改变。所有用户做的全部 UPDATE、INSERT 和 DELETE 语句均通过游标可见。
JDBC游标的属性包括3种:滚动性、敏感性、只读。


(上表是按自己目前理解来总结的,有待验证)
  • 大小: 25.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics