在PowerBuilder中读取数据库的多行数据 .

当需要从数据库中同时读取多条记录的时候,就需要使用游标进行操作。游标CURSOR是一个与SELECT语句相关联的符号名,游标的最大好处是可以让用户逐行的访问表中的记录。使用游标的典型的过程如下:
       1)用DECLARE关键字声明游标。
       2)使用OPEN语句打开游标
       3)使用FETCH语句读取一行数据
       4)处理数据
       5)判断是否已经读取完所有的数据,未读完数据的话,GOTO步骤3
       6)使用CLOSE关键字关闭游标

 

    (1)DECLARE 语句
     在使用游标之前,需要使用DECLARE语句声明游标,使用DECLARE语句声明游标的格式如下:
          DECLARE CursorName CURSOR FOR SelectStatement
          [USING TransactionObject]
     其中CursorName是游标的名称,可以使用任何有效的标识符来表示;SelectStatement是任何有效的Select语句;TransactionObject是事务对象名,默认时使用SQLCA(SQL通信区).
     例如,下面的语句声明了一个名字叫做student_sur的游标,该游标使用了默认事务对象SQLCA和一个变量le_sex,其作用就是选取某个性别的所有的学生的学号和姓名:
           DECLARE  student_cur CURSOR FOR
           SELECT student,student_id,student.student_name
           FROM student WHERE student.sex=:ls_sex
     DECLARE是个声明语句,可以像声明标准数据类型那样把游标声明称局部变量,实例变量或者是全局变量.它并不真正的执行,因此在DECLARE语句后,也无须检查事务对象的SQLCode属性.
值得注意的是DECLARE虽然是一个声明语句,但是仍旧需要使用分号作为结束符.

 

     (2)OPEN语句
     OPEN语句打开已经声明的游标并且执行相应的SELECT语句,其语法格式是:
          OPEN CursorName;
     其中,CursorName是已经使用DECLARE语句声明的游标名,例如:
          open student_cur;

 

   (3)FETCH语句
     FETCH语句从游标中读取当前记录并且把它保存到指定的变量中,只要数据库支持,还可以使用FECTH FIRST,FETCH PRIOR,FETCH LAST。FETCH语句的语法格式为:
          FETCH CursorName INTO VariableList
     其中,CursorName是OPEN语句打开的游标名;VariableList是与Select语句中选择字段相对应的变量列表,例如,对前面DECLARE语句说明的游标,可以使用下面的语句读取记录:
          string ls_student,ls_student_name
          FETCH student_cur INTO :ls_student_id,:ls_student_name;
     每执行一次FETCH语句都会从游标中读取一行记录,需要读取多行记录时需要反复调用FETCH语句.执行FETCH语句之后,应该检查事务对象的SQLCode属性,该属性为0的时候,表明成功的读取当前的记录,如果SQLCode为-1的时候,表明读取当前的记录失败,为100的时候,表明已经读取完了所有的记录.

 

     (4)CLOSE语句
     CLOSE语句关闭先前打开的游标.其语法格式为
          CLOSE CursorName;
     其中,Cursorname是先前打开的游标的名称.
     关闭游标之后,就不能再使用FETCH语句从游标中读取数据了,下面是关闭游标的示例:

          CLOSE student_cur;

 

转自:http://blog.csdn.net/ziwen00/article/details/5387131

你可能感兴趣的:(PowerBuilder)