sybase数据库技术 :游标可更新与for read only/for update

在定义游标时不指定for update 或 for read only,ASE会检查以了解游标是否可更新;

如果游标查询语句中包含order by子句,则ASE会将游标定义为只读;其它情况下定义为可更新游标;

如果不涉及更新或删除表数据的话,建议在游标定义中加上for read only选项,这样ASE将游标定义为只读;

表customer在c_custkey列上建有唯一索引,查询表的前10行内容(所有字段拼接成一个字符串),

如果定义游标为for read only:

declare cur_hash cursor for select top 10 convert(varchar,c_custkey)+coalesce( nullif(isnull(c_name,‘‘), ‘‘) , ‘ ‘)+coalesce( nullif(isnull(c_address,‘‘),‘‘) , ‘ ‘)+convert(varchar,c_nationkey)+coalesce( nullif(isnull(c_phone,‘‘),‘‘) , ‘ ‘)+convert(varchar,c_acctbal)+coalesce( nullif(isnull(c_mktsegment,‘‘),‘‘) , ‘ ‘)+coalesce( nullif(isnull(c_comment,‘‘),‘‘ ) , ‘ ‘) from customer for read only

则使用表扫描返回表的前10行数据;

如果定义游标为for update或者不指定for read only/for update:

则ASE会使用c_custkey列上的唯一索引扫描表数据,然后返回按照c_custkey键顺序的前10行数据;

对于该查询语句:select top 10 ... from customer,即使不指定for update,ASE也会将游标定义为可更新;

如果没有指定 for update 子句, ASE将选择任何唯一索引;如果指定表列没有唯一索引的情况下,它也可以使用其它索引或表扫描。

但如果指定了 for update 子句, ASE必须使用为一个或多个列定义的唯一索引扫描基表。如果不存在,则返回一个错误。

可以通过抽象计划来查看游标扫描表数据的时候是否使用了唯一索引:

查看在存储过程外声明的游标信息:

sp_cursorinfo null, cursor_name

查看在存储过程声明的游标信息:

在存储过程内加入: exec sp_cursorinfo

存储过程sp_cursorinfo除了显示游标的状态信息外,还显示游标查询语句的抽象计划信息。

游标的状态不同输出也会不同,一般会输出:

1、游标定义、编译、扫描数据所使用的隔离级别;

2、游标是否可滚动;

3、游标当前位置;

4、游标已经读取/更新/删除的行数;

5、游标在事务提交或回滚后是否继续保持打开状态;

6、每次提取的行数;

7、游标是只读还是可更新的;

8、游标所消耗的内存数量;

9、游标返回的结果集的列数;

10、游标结果集的列信息(列类型、列宽度、是否可更新);

关于选项:set close on endtran

如果提交或回退游标的当前事务,默认情况下游标是保持打开状态;输出:The cursor will remain open when a transaction is committed or rolled back.

如果设置set close on endtran on则提交或回退游标的当前事务时游标会关闭;输出:The cursor will be closed when a transaction is committed or rolled back.

时间: 2024-10-15 07:23:30

sybase数据库技术 :游标可更新与for read only/for update的相关文章

Sybase数据库技术,数据库恢复---分享Sybase数据库知识(博客文章索引@51cto)

Sybase数据库技术,数据库恢复分享Sybase数据库知识 博客文章列表,更新时间:2014-12-14 Sybase数据库技术,数据库恢复 站点地图 最新文章 ASE使用with ignore_dup_row删除重复数据  (评论 0   阅读 50) ASE 16静默方式安装并创建服务器  (评论 0   阅读 80) ASE执行sp_remotesql报错:Msg 11224, Level 16, State 2  (评论 0   阅读 72) Sybase支持浪潮天梭K1系统  (评论

delphi 数据库技术沉浮录--谨给成为历史的BDE

2014年9月,delphi xe7 出来了,这次在数据库技术方面,彻底抛掉了从1995 年 delphi 1.0 就自带的(Borland Database Engine)数据库访问技术.从而宣告了这个持续 了20余年delphi 访问数据库技术进入历史. 纵观delphi 数据库技术的20年发展史,其实也是delphi 的发展史.通过数据库技术的 变化,也可以了解delphi的发展历史及未来的方向. 一. 话说当初 Delphi 1.0 是16 位的编译器,当时的互联网几乎是不存在,拿到的第

社交网数据库技术分析(转)

Normal 0 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 原文:http://blog.csdn.net/ding_yiming/article/details/5603067 社交网 现在,传统的互联网正在迈向一个一个全新的时代 ---- 社交服务网时代( Social Networking Service ),从“人与机器”的时代迈向“人与人”的时代.互联网社交服务网站的发展验证了“六度分隔理论”( Si

大数据挑战与NoSQL数据库技术pdf

下载地址:网盘下载 内容简介 编辑 <大数据挑战与nosql数据库技术>对大数据时代面临的挑战,以及nosql数据库的基本知识做了清晰的阐述,有助于读者整理思路,了解需求,并更有针对性.有选择地深入学习相关知识.[1] 目录 编辑 第1章概论1 1.1引子2 1.2大数据挑战3 1.3大数据的存储和管理5 1.3.1并行数据库5 1.3.2NoSQL数据管理系统6 1.3.3NewSQL数据管理系统8 1.3.4云数据管理11 1.4大数据的处理和分析11 1.5小结13 参考文献13 理论篇

《C#语言和数据库技术基础》单词必备

<C#语言和数据库技术基础> 第一章1..NET Framework   框架2.sharp            尖锐3.application      应用程序4.developer        开发者5.network          网络6.build            建造,建筑7.console          控制台8.debug            调试9.namespace        命名空间10.project         项目11.solution 

对数据库技术的发展及SQL数据库的认识

一.数据库管理技术的发展 数据库技术就是研究如何科学的管理数据以便为人们提供可共享的.安全的.可靠的数据的技术.数据库技术包括数据管理和数据处理两部分内容.     人工管理阶段 20世纪50年代中期以前,计算机主要用于科学计算.在这一阶段,计算机除硬件外,没有管理数据的软件,数据处理方式是批处理.数据的组织和管理完全靠程序员手工完成,      此阶段数据的管理效率很低,其特点如下.      1. 数据不保存 此阶段计算机主要用于科学计算,并不对数据进行其他操作,一般不需要将数据长期保存,只

性能问题解决案例01——sybase数据库内存问题

最近现场反馈问题,所有电子签章页面打不开文书(pdf格式),后台日志没报任何错误,效果就是空白: 1.首先想到是签章的ocx控件问题,检查ocx控件安装,发现其他电脑也打不开文书,测试页面可以直接打开pdf文档,排除控件的问题. 2.怀疑是文书下载出问题了,检查文书下载功能,我们是把pdf文书下载到本地"我的文档"目录中,然后使用ocx控件打开文书,检查发现有的文书能正常下载到本地,有的干脆不下载,能下载到本地的文书可以正常打开.检查ftp发现文书都没问题,定位问题就出在从ftp下载这

数据定义未来——2016数据库技术大会总结

背景 作为国内数据库与大数据领域最大规模的技术盛宴,2016第七届中国数据库技术大会(DTCC)如约于2016年5月12日-14日再度震撼来袭.大会以"数据定义未来"为主题,云集了国内外顶尖专家,共同探讨MySQL.NoSQL.Oracle.缓存技术.云端数据库.智能数据平台.大数据安全.数据治理.大数据和开源.大数据创业.大数据深度学习等领域的前瞻性热点话题与技术.本届大会共设定2个主会场,25个分会场,并将吸引5000多名IT人士参会,为数据库人群.大数据从业人员.广大互联网人士及

【16.09.01】【三零技术】最新更新文章推荐

1.[PHP编程:PHP简单无限分类类代码] 简介:这里就不多解释原理了,直接发代码.PS:这里代码是不能直接使用的,必须结合我的一些其他库类.应该说思想才是最重要的,这里主要提供一种分类的思路.... 地址:http://www.q3060.com/list3/list117/34130.html 2.[PHP编程:PHP简单的采集程序] 简介:    (修改了下,增加了数据缓存功能..汗,没有使用lite_cache了,自己写了个最简单的那种..)