教你快速掌握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
投稿

猜你喜欢

  • Python实现生成随机数据插入mysql数据库的方法

    2024-01-19 09:28:42
  • MySQL8自增主键变化图文详解

    2024-01-25 19:08:38
  • 使用python写一个自动浏览文章的脚本实例

    2023-11-10 10:52:52
  • 巧用mysql提示符prompt清晰管理数据库的方法

    2024-01-24 14:05:07
  • 在Python中进行自动化单元测试的教程

    2023-07-16 04:12:30
  • Oracle9i取得建表和索引的DDL语句

    2024-01-16 22:18:31
  • 伪静态下不能使用FCKeditor的解决方法

    2023-02-03 06:54:20
  • Python实现手写一个类似django的web框架示例

    2022-06-18 03:17:26
  • Go语言中DateTime的用法介绍

    2024-04-27 15:31:55
  • 对架构师的建议:博学笃志,切问近思

    2009-09-25 12:55:00
  • Python机器学习之逻辑回归

    2023-11-18 14:19:02
  • PHP笛卡尔积实现算法示例

    2023-09-08 19:58:09
  • Mysql存储过程循环内嵌套使用游标示例代码

    2024-01-27 10:18:25
  • oracle scott 解锁步骤

    2024-01-21 10:27:30
  • python自动化运维之Telnetlib的具体使用

    2022-09-24 22:11:16
  • ASP.NET中MVC从后台控制器传递数据到前台视图的方式

    2023-06-29 07:09:39
  • python利用K-Means算法实现对数据的聚类案例详解

    2021-02-28 10:01:29
  • Python基于Serializer实现字段验证及序列化

    2023-07-19 21:50:36
  • JavaScript Date()在页面内显示日期

    2008-02-05 10:18:00
  • 10种检测Python程序运行时间、CPU和内存占用的方法

    2023-08-04 16:28:14
  • asp之家 网络编程 m.aspxhome.com