教你快速掌握SQL语言中游标的使用技巧(2)

作者:yashi 时间:2009-01-08 16:24:00 

关闭游标

在游标操作的最后请不要忘记关闭游标,这是一个好的编程习惯,以使系统释放游标占用的资源。关闭游标的语句很简单:

CLOSE CustomerCursor;

使用Where子句

我们可以动态地定义游标中的Where子句的参数,例如在本例中我们是直接定义了查询省份是北京的记录,但也许在应用中我们要使用一个下拉式列表框,由用户来选择要查询的省份,我们该怎样做呢?

我们在前面曾经提到过,DECLARE语句的作用只是定义一个游标,在OPEN语句中这个游标才会真正地被执行。了解了这些,我们就可以很方便地实现这样的功能,在DECLARE的Where子句中加入变量作参数,如下所示:

DECLARE CustomerCursor CURSOR FOR

SELCECT acct_no,name,balance

FROM customer

WHERE province=:ls_province;

∥定义ls_province的值

OPEN CustomerCursor;

游标的类型

同其它变量一样,我们也可以定义游标的访问类型:全局、共享、实例或局部,游标变量的命名规范建议也同其它变量一样。

游标的高级技巧

尽管目前基于SQL语句的后台数据库所支持的语言都大致相当,但对游标的支持却有着一些差异,例如对滚动游标支持。所谓滚动游标,就是程序员可以指定游标向前后任意一个方向滚动。如在Informix中,您甚至还可以将游标滚向结果集开头或末尾,使用的语句分别是FETCH FIRST,FETCH LAST、FETCH PRIOR和FETCH NEXT。当程序员用FETCH语句,其缺省是指FETCH NEXT。由于滚动是在数据库后台实现的,所以滚动游标为用户编程提供了极大的方便。

对游标支持的另一个不同是可修改游标。上述游标的使用都是指只读游标,而象Oracle、Sybase等数据库却另外支持可作修改的游标。使用这样的数据库,您可以修改或删除当前游标所在的行。例如修改当前游标所在行的用户的余额,我们可以如下操作:

UPDATE customer

SET balance=1000

WHERE CURRENT of customerCursor;

删除当前行的操作如下:

DELETE FROM Customer

WHERE CURRENT OF CustomerCursor;

但是如果您当前使用的数据库是Sybase,您需要修改数据库的参数,将游标可修改的值定为1,才能执行上述操作。这一赋值在连接数据库的前后进行均可。

SQLCA.DBParm="Cursor Update=1"

另外一个内容是动态游标,也就是说您可以运行过程中动态地形成游标的SELECT语句。这同在PowerBuilder中动态地使用嵌入式SQL一样,需要用到DynamicStagin-gArea等数据类型,这已超出了本节的范围。

标签:
0
投稿

猜你喜欢

  • 发一段鼠标掠过表格行颜色改变的代码

    2010-07-02 12:59:00
  • asp自动补全html标签自动闭合(正则表达式)

    2013-06-01 20:01:59
  • 段正淳的css笔记(5)未知图片垂直居中的方法

    2007-11-01 22:06:00
  • 实例讲解Oracle到SQL Server主键迁移

    2009-03-25 13:30:00
  • 10条改进你的CSS代码的方法

    2010-03-20 22:07:00
  • 如何把图片也存到数据库中去?

    2009-11-06 13:56:00
  • 那些看一眼就让你难忘的广告

    2007-09-21 19:46:00
  • 怎么样在网页上读取远程xml的数据

    2008-10-10 17:43:00
  • asp中判断服务器是否安装了某种组件的函数

    2011-02-16 10:53:00
  • mysql 安装使用小记

    2011-02-23 12:33:00
  • 改进SQL Server数据库系统安全五步走

    2009-01-20 11:47:00
  • W3C优质网页小贴士(四)

    2008-04-17 13:34:00
  • 能否推荐一个论坛用的数据库结构?

    2009-11-01 18:09:00
  • CSS Sprites对CSS布局的意义、优点和缺点介绍

    2008-07-14 07:22:00
  • WEB设计经验-来自Microsoft

    2008-05-15 07:30:00
  • ASP 使用jqGrid实现读写删的代码(json)

    2010-03-07 17:26:00
  • 发一个较复杂的字符串截取函数

    2009-12-08 16:23:00
  • focus 进 textarea 元素后光标位置的修复

    2008-09-27 13:27:00
  • 推荐个辅助软件FastStone Capture

    2008-12-23 13:23:00
  • 一个提高了近10%转化率的改进

    2009-05-22 12:40:00
  • asp之家 网络编程 m.aspxhome.com