43、SQL编程:从静态到动态的全面解析

SQL编程:从静态到动态的全面解析

1. 滚动游标(Scroll Cursors)

滚动游标在允许用户浏览数据库内容的程序中特别有用。当用户请求逐行或逐屏向前或向后移动数据时,程序可以轻松获取查询结果中的所需行。然而,与普通的单向游标相比,数据库管理系统(DBMS)实现滚动游标要困难得多。

为了支持滚动游标,DBMS 必须跟踪它为程序提供的先前查询结果以及提供这些结果行的顺序。此外,DBMS 还必须确保没有其他并发执行的事务修改通过滚动游标对程序可见的数据,因为即使游标已经移过某一行,程序仍可以使用扩展的 FETCH 语句重新检索该行。

使用滚动游标时,需要注意某些 DBMS 品牌在执行滚动游标上的特定 FETCH 语句时可能会产生很高的开销。如果 DBMS 通常在程序逐行获取查询结果时逐步执行查询,当游标位于查询结果的第一行时请求 FETCH NEXT 操作,程序可能会比正常情况等待更长时间。因此,在编写依赖滚动游标功能的生产应用程序之前,最好了解特定 DBMS 品牌的性能特征。

由于滚动游标的实用性,并且一些 DBMS 供应商开始提供略有不同的滚动游标实现,SQL 标准进行了扩展以支持滚动游标。标准的入门级 SQL 级别仅要求使用旧样式的顺序向前游标,但中级 SQL 或完整 SQL 级别要求完全支持滚动游标语法。标准还规定,如果在游标上使用除 FETCH NEXT(默认)之外的任何移动操作,其 DECLARE CURSOR 语句必须明确将其标识为滚动游标。例如:

exec sql declare repcurs scroll cursor for 
          select
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值