静态游标

静态游标概念

静态游标是只读游标,它总是按照打开游标时的原样显示结果集,在编译时就能确定静 态游标使用的查询。

静态游标又分为两种:隐式游标和显式游标。 

1.隐式游标

%FOUND:语句是否修改或查询到了记录,是返回TRUE,否则返回FALSE; 

%NOTFOUND:语句是否未能成功修改或查询到记录,是返回TRUE,否则返回 FALSE; 

%ISOPEN:游标是否打开。是返回TRUE,否返回FALSE。由于系统在语句执行 完成后会自动关闭隐式游标,因此隐式游标的%ISOPEN 属性永远为FALSE; 

%ROWCOUNT:DML 语句执行影响的行数,或SELECT…INTO 语句返回的行数。 

2.显示游标

显式游标指向一个查询语句执行后的结果集区域。当需要处理返回多条记录的查询时, 应显式地定义游标以处理结果集地每一行。 使用显式游标一般包括四个步骤:

1. 定义游标:在DMSQL 程序的声明部分定义游标,声明游标及其关联的查询语句;

2. 打开游标:执行游标关联的语句,将查询结果装入游标工作区,将游标定位到结果 集的第一行之前;

3. 拨动游标:根据应用需要将游标位置移动到结果集的合适位置;

4. 关闭游标:游标使用完后应关闭,以释放其占有的资源。 下面对这四个步骤进行具体介绍。

不同语法定义显示游标

cursor c1 is select name from student where id=1;

cursor c2 return resources.employee%rowtype is select * from resources.employee

cursor c3 is table employee

注意cursor c1 fast中的fast是指该游标是快速游标,缺省为NO FAST,为普通游标。快速游标提前返回结果集,速度上提升明显,但是存在以下的使用约束: 

FAST 属性只在显示游标中支持; 

使用快速游标的DMSQL 程序语句块中不能修改快速游标所涉及的表;

不支持游标更新和删除; 

不支持NEXT 以外的FETCH 方向; 

不支持快速游标作为函数返回值; 

MPP 环境下不支持对快速游标进行FETCH 操作。

打开游标:open 游标名

拨动游标:FETCH [<fetch 选项> [FROM]] <游标名> [ [BULK COLLECT]  INTO <主变量名>{,<主变量 名>} ] [LIMIT <rows>]; <fetch 选项>::= NEXT|PRIOR|FIRST|LAST|ABSOLUTE n|RELATIVE n 

 

关闭游标:close 游标名

游标在使用完后应及时关闭,以释放它所占用的内存空间。当游标关闭后,不能再从游标中获取数据,否则将报错。如果需要,可以再次打开游标。 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值