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.
sybase数据库技术 :游标可更新与for read only/for update的更多相关文章
- 数据库技术丛书:SQL Server 2016 从入门到实战(视频教学版) PDF
1:书籍下载方式: SQL Server2016从入门到实战 PDF 下载 链接:https://pan.baidu.com/s/1sWZjdud4RosPyg8sUBaqsQ 密码:8z7w 学习 ...
- 浅谈数据库技术,磁盘冗余阵列,IP分配,ECC内存,ADO,DAO,JDBC
整理-----数据库技术,磁盘冗余阵列,IP分配, ECC内存,ADO, DAO,JDBC 1.MySQL MySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发.发布和支持.My ...
- delphi 数据库技术沉浮录--谨给成为历史的BDE
2014年9月,delphi xe7 出来了,这次在数据库技术方面,彻底抛掉了从1995 年 delphi 1.0 就自带的(Borland Database Engine)数据库访问技术.从而宣告了 ...
- 2016 DTCC(中国数据库技术大会)
上周去参加了2016 DTCC(数据库技术大会),会议总共持续3天,议题非常多,我这里搜集了最新的公开的PPT内容,有兴趣的同学可以下载看看,PPT合集下载链接为:http://pan.baidu.c ...
- Sybase数据库截断和清空日志的方法
今天碰到一个奇怪的问题,当我打开应用程序的时候,开始的时候鼠标图标还显示程序正在启动,可是一会后,就没有任何反应了.重复了N多次都是这样,后来发现,每次打开应用程序的时候,任务管理器中都会相应的多一个 ...
- 《C#语言和数据库技术基础》单词必备
<C#语言和数据库技术基础> 第一章1..NET Framework 框架2.sharp 尖锐,强烈的3.application 应用程序4.devel ...
- sybase数据库和oracle数据库中字段中含有换行符的解决办法
最近在做数据库从sybase到oracle的迁移工作,sybase数据库表bcp导出后,通过sqlldr导入到oracle数据库,然后oracle数据库通过spool按照sybase数据库bcp的格式 ...
- CouchBase数据库-一个较新的、发展迅速的nosql数据库技术
couchbase是一个较新的.发展迅速的nosql数据库技术.2014年,viber宣布使用couchbase替换mongodb,以适应10亿级的用户量,目前,couchbase已大量运用于生产环境 ...
- XPages访问关系型数据库技术与最佳实践
XPage 对于 Domino 开发人员的一大好处就是能够很方便和高效的访问关系型数据库.本文通过实例代码展现了在 XPage 中访问关系型数据库的具体步骤 , 同时讲解了一些在 XPage 中高效访 ...
随机推荐
- 去除\ufeff的解决方法,python语言
语言:python 编程工具:pycharm 硬件环境:win10 64位 读取文件过程中发现一个问题:已有记事本文件(非空),转码 UTF-8,复制到pycharm中,在开始位置打印结果会出现 \ ...
- Deep Learning基础--SVD奇异值分解
矩阵奇异值的物理意义是什么?如何更好地理解奇异值分解?下面我们用图片的例子来扼要分析. 矩阵的奇异值是一个数学意义上的概念,一般是由奇异值分解(Singular Value Decomposition ...
- POJ - Problem 2282 - The Counting Problem
整体思路:对于每一位,先将当前未达到$limit$部分的段 [如 $0$ ~ $10000$] 直接处理好,到下一位时再处理达到$limit$的部分. · $1 × 10 ^ n$以内每个数(包括$0 ...
- POJ 3026 Borg Maze(Prim+bfs求各点间距离)
题目链接:http://poj.org/problem?id=3026 题目大意:在一个y行 x列的迷宫中,有可行走的通路空格’ ‘,不可行走的墙’#’,还有两种英文字母A和S,现在从S出发,要求用 ...
- Python+Selenium 自动化实现实例-实现文件下载
#coding=utf-8 from selenium import webdriver #实例化一个火狐配置文件 fp = webdriver.FirefoxProfile() #设置各项参数,参数 ...
- java IntelliJ IDEA 13 注册码 IDEA序列号 License Key
java IntelliJ IDEA 13 注册码 IDEA序列号 License Key Username: JavaDeveloper@sskaje.me License: 282971-M1NW ...
- Makefile的使用方法
转自:http://blog.chinaunix.net/uid-403164-id-2407545.html 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Wind ...
- JAVA(一)变量
public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(" ...
- 【Mac 10.13.0】安装 libimobiledevice,提示报错:warning: unable to access '/Users/lucky/.config/git/attributes': Permission denied解决方案
打开终端,执行命令: 1.sudo chown -R XXX /usr/local (XXX表示当前用户名) 2.ruby -e "$(curl -fsSL https://raw.git ...
- codeforce 1A Theatre Square
A. Theatre Square Theatre Square in the capital city of Berland has a rectangular shape with the siz ...