文档下载建议反馈入口

  • 打开游标
  • 获取游标
  • 关闭游标

游标

KaiwuDB 支持在存储过程中使用游标。

说明

声明游标后,需要先打开游标,然后才能使用游标。有关如何声明游标的详细信息,参见声明游标

打开游标

OPEN 语句用于打开一个之前声明的游标。

所需权限

语法格式

参数说明

参数说明
cursor_name待打开游标的名称。

语法示例

DELIMITER \\
CREATE PROCEDURE process_cursor_example1()
BEGIN 
    declare var_done int; 
    declare var_age int; 
    DECLARE cur CURSOR FOR SELECT age FROM employees; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET var_done = 1; 
    OPEN cur;
    SELECT * FROM employees;
    LABEL my_loop: 
    WHILE var_done = 0 DO 
        FETCH cur INTO var_age; 
        select var_age;
        IF var_done = 1 THEN
            LEAVE my_loop; 
        ENDIF;                        
    ENDWHILE my_loop; 
    CLOSE cur;        
END \\

获取游标

FETCH 语句用于获取一行数据的值赋值到指定的变量中。当赋值到指定的变量时,FETCH 语句中指定的输出变量的数量必须与声明游标时 SELECT 语句检索的列数保持一致。用户可以通过 CONTINUE HANDLER 语句结束游标获取,或通过其他方式退出 FETCH 循环。如未正确结束游标获取,导致无法获取数据的值,系统报错 the fetch cursor has no more data

所需权限

语法格式

参数说明

参数说明
cursor_name待获取游标的名称。
cursor_list待赋值的变量。支持指定一个或多个变量,变量之间用逗号(,)隔开。

语法示例

DELIMITER \\
CREATE PROCEDURE into_pre() 
 BEGIN
    DECLARE val int; 
    DECLARE cur1 cursor for select a from t1;
    OPEN cur1;
    FETCH cur1 INTO val;
    CLOSE cur1;
    SELECT val;
 END \\ 

关闭游标

CLOSE 语句用于关闭游标。关闭游标后,需要重新打开才能继续使用。

所需权限

语法格式

参数说明

参数说明
cursor_name待关闭游标的名称。

语法示例

DELIMITER \\
CREATE PROCEDURE into_pre1() 
 BEGIN
    DECLARE val int4; 
    DECLARE cur2 cursor for select a from t2;
    OPEN cur2;
    FETCH cur2 INTO val;
    CLOSE cur2;
 END \\