一、概念

• REF游标和游标变量用于处理运行时动态执行的SQL查询的结果集。

• 创建游标变量有两个步骤:

  • 声明REF游标类型

  • 声明REF游标类型的游标变量

• 声明REF游标的语法:

  type 游标类型名 is ref cursor [return 返回值类型]

二、区别

• 静态游标和REF游标的区别:

  • 静态游标是静态定义,REF游标是动态关联。

  • 使用REF游标需REF游标变量。

  • REF游标能作为参数进行传递,而静态游标是不能的。

三、优势 

• 游标变量与游标相比较:

  • 游标只能处理静态的查询语言

  • 游标变量可以处理动态查询语句的结果集

四、实例

declare
    --强类型的游标类型
    type strong_cursor_type is ref cursor return emp%rowtype;
    --弱类型的游标类型
    type weak_cursor_type is ref cursor;
    
    --变量定义
    strong_cursor strong_cursor_type;
    weak_cursor weak_cursor_type;
    v_emp emp%rowtype;
begin
    open strong_cursor for select * from emp;
    loop
        fetch strong_cursor into v_emp;
        exit when strong_cursor%notfound;
        dbms_output.put_line(v_emp.empno || '-' || v_emp.ename);
    end loop;
    close strong_cursor;
    
    open weak_cursor for '&sql';
    loop
        fetch weak_cursor into v_emp;
        exit when weak_cursor%notfound;
        dbms_output.put_line(v_emp.empno || '-' || v_emp.ename);
    end loop;
    close weak_cursor;
end;

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/atomy/p/16343191.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!