云数据库 GAUSSDB-执行动态查询语句:OPEN FOR

时间:2023-11-15 14:50:52

OPEN FOR

动态查询语句还可以使用OPEN FOR打开动态游标来执行。

语法参见图3

图3 open_for::=

参数说明:

  • cursor_name:要打开的游标名。
  • dynamic_string:动态查询语句。
  • USING value:在dynamic_string中存在占位符时使用。

游标的使用请参考游标

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
openGauss=# DECLARE
    name          VARCHAR2(20);
    phone_number  VARCHAR2(20);
    salary        NUMBER(8,2);
    sqlstr        VARCHAR2(1024);

    TYPE app_ref_cur_type IS REF CURSOR;  --定义游标类型
    my_cur app_ref_cur_type;  --定义游标变量
    
BEGIN
    sqlstr := 'select first_name,phone_number,salary from hr.staffs
         where section_id = :1';
    OPEN my_cur FOR sqlstr USING '30';  --打开游标, using是可选的
    FETCH my_cur INTO name, phone_number, salary; --获取数据
    WHILE my_cur%FOUND LOOP
          dbe_output.print_line(name||'#'||phone_number||'#'||salary);
          FETCH my_cur INTO name, phone_number, salary;
    END LOOP;
    CLOSE my_cur;   --关闭游标
END;
/
support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb_v5r2c10_0640.html