Sybase游标应用

虽然很多人都说游标的性能不好,但感觉在某些地方,你不得不用游标(可能是我水平低的问题,有些牛人是可以通过各种技巧来避免使用游标)。当然我也只是初学而已,通过网络的搜索,总结了一下游标的基本使用方法。另求助各牛人,希望能说一下游标的性能究竟有多烂,还有如何避免使用游标。

1 定义游标

语法是:declare cursor_name cursor for select_statement [for{read only|update[of colum_name_list]}]

 

其中select_statement是一个SELECT语句,这个语句返回多行结果数据,它不允许有INTO子句和COMPUTE子句存在。通过使用for updatefor read only关键词将游标显式定义成可更新的或只读的。游标一定要与一个结果集联系在一起。

2 打开游标

语法是:open cursor_name

 

在声明游标后,必须打开它以便用fetch,update,delete读取、修改、删除行。在打开一个游标后,它将被放在游标结果集的首行前,必须用fetch语句访问该首行。

3 取数据

语法是:fetch cursor_name into: host_ vavriable……

 

从打开的游标中检索数据,并将这些数据赋给宿主变量。在每次执行取数语句时,首先将游标向前推进一位,然后按照游标当前位置取一值,并对相应变量赋值。一条FETCH语句一次可以将一条记录放入指定的变量中。赋给变量时,是按照记录的列从左到右赋给变量的。

 

其中在每次读取数据后,都会返回一个状态值,可用@@sqlstatus访问该值:

0       Fetch语句成功
1       Fetch
语句导致错误
2      
结果集没有更多的数据,当前位置位于结果集最后一行,而客户对该游标仍发出Fetch语句时。

4 关闭游标

语法是:close cursor_name

 

当取数完毕或者发生错误时,一定要关闭游标。否则下次调用游标将出错。

5 删除游标

语法是:deallocater cursor_name

 

该语句主要是将游标调用的内存资源释放。

6 游标其他应用

若游标是可更新的,可用updatedelete语句来更新和删除行。

1.      删除游标当前行

语法:Delete from 表名 where current of 游标名

 

当游标删除一行后,游标将置于被删除行的前一行上。

 

2.      更新游标当前行

语法:update 表名 set column_name1={expression1|NULL|(select_statement)} [,column_name2={expression2|NULL|(select_statement)} [……] where current of 游标名

举例: update publishers set city=” Pasadena ”,state=”CA” where current of pubs_crsr

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值