【openGauss笔记】游标

文章目录

  • 1. 声明游标
  • 2. 打开游标
  • 3. 使用游标
  • 4. 关闭游标

不同于SQL查询单独执行时每次返回多个结果集,游标可以每次只返回一个结果,通过反复地对游标做FETCH操作,就可以获得多个查询结果。
游标的使用通常分为4个步骤:声明、打开、使用、关闭

  1. 声明:定义一个游标。
  2. 打开:打开游标,实际上是开始为游标赋予初值。
  3. 使用:通过MOVE等命令移动游标,并获得游标指向的内容。
  4. 关闭:游标使用结束后,关闭游标。

1. 声明游标

  1. 声明没有绑定SQL语句的游标。具体语句如下:
    DECLARE cursor_no_sql REFCURSOR;
    
  2. 声明绑定具体执行的SQL语句的游标。具体语句如下:
    DECLARE cursor_sql CURSOR FOR SELECT w_name FROM warehouse;
    
  3. 申明在指定SQL语句的同时指定需要绑定参数的游标。具体语句如下:
    DECLARE cursor_sql_param(id SMALLINT) CURSOR FOR SELECT w_name FROM warehouse WHERE w_id = id;
    

2. 打开游标

如果游标在声明时没有绑定SQL语句,那么在打开游标时必须指定SQL查询语句。
例2-66:打开一个未绑定SQL语句的游标,同时指定SQL语句。具体语句如下:

OPEN cursor_no_sql FOR SELECT w_name FROM warehouse;

对于未绑定SQL语句的游标,还可以通过formatUSING指定动态命令。
例2-67:打开一个游标,通过formatUSING操作指定绑定的SQL语句。具体语句如下:

OPEN cursor_dyn FOR EXECUTE format('SELECT * FROM % I ORDER BY $ 1', 'warehouse') USING w_id;

如果已经绑定SQL语句,那么可以直接打开游标。
例2-68:对于已经绑定SQL的游标,可以直接打开,如果在绑定SQL语句时设置了参数,这里需要指定参数的值。具体语句如下:

OPEN cursor_sql;
OPEN cuesor_sql_param(id: =1);

3. 使用游标

打开游标后,可以通过FETCHMOVE等命令来操作游标指向的元组:

  1. FETCH:检索并返回游标所指向的行
  2. MOVE:重新定义游标的位置,不返回数据

例2-69:使用FETCH或MOVE命令检索数据。具体语句如下:

FETCH cursor_sql INTO variable;
FETCH cursor_sql_param(id:=1) INTO variable;
MOVE cursor_sql;
MOVE NEXT FROM cursor_sql;

游标的移动方向是可以指定的:

  1. NEXT:返回当前游标指向的下一条元组,而且游标递增指向下一条元组。
  2. LAST:返回游标指向的结果集合中的最后一条元组,并且将最后一条元组作为当前元组。
  3. PRIOR:返回当前游标指向的上一条元组,并且游标递减指向上一条元组。
  4. FIRST:返回游标指向的结果集合中的第一条元组,并且将第一条元组指定为当前元组。
  5. ABSOLUTE count:读取游标指向的结果集合中的第count条元组,如果count为负数,那么返回从结果集合末尾向前的第count条元组。
  6. RELATIVE count:获取从当前元组开始的第count条元组。
  7. FORWARD:和PRIOR相同,返回当前游标指向的上一条元组。
  8. BACKWARD:和NEXT相同,返回当前游标指向的下一条元组。

4. 关闭游标

关闭游标可以用CLOSE命令来实现。
例2-70:关闭游标cursor_sql。具体语句如下:

CLOSE cursor_sql;

你可能感兴趣的:(openGauss,sql,数据库,mysql)