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

时间:2025-02-12 15:08:13

OPEN FOR

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

语法参见图3

图3 open_for::=

参数说明:

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

游标的使用请参考游标

示例
 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637
gaussdb=# CREATE SCHEMA hr;gaussdb=# SET CURRENT_SCHEMA = hr;gaussdb=# DROP TABLE IF EXISTS staffs; gaussdb=# CREATE TABLE staffs (  section_id NUMBER,  first_name VARCHAR2,  phone_number VARCHAR2,   salary NUMBER  );gaussdb=# INSERT INTO staffs VALUES (30, 'mike', '13567829252', 5800);gaussdb=# INSERT INTO staffs VALUES (40, 'john', '17896354637', 4000);gaussdb=# 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;/mike#13567829252#5800.00ANONYMOUS BLOCK EXECUTEgaussdb=# DROP TABLE staffs; 
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0777.html