• 学习笔记-oracle-PL/SQL-动态游标


    动态游标的分类:

    一 强类型 :带RETURN语句的,只能为查询结果与ruturn类型相同的查询语句打开。

    二 弱类型 :不带RERURN语句。可以为任何查询语句打开。

       

    --使用动态游标的步骤

      1:定义REF动态游标类型。 2:声明ref动态游标。 3:打开ref动态游标。 4:关闭游标

    1:定义REF动态游标

       语法:TYPE 〈类型名〉 IS REF CURSOR

                [RETURN <返回类型>] ;  --如果定义了返回类型,类型必须是RECORD类型。

    2:声明ref动态游标

       语法:<游标名>  <游标类型> ;   --游标类型必须是自定义的ref类型

    3:打开ref动态游标

       语法: OPEN 〈游标名〉 FOR 〈查询语句〉; --打开游标的时候需要确定查询语句。

    4:关闭游标

      SLOSE 〈游标名〉;

    --------示例,动态游标的用法

    --动态游标,强类型游标,定义游标所要绑定数据表
    DECLARE
    TYPE ref_cur_emp IS REF CURSOR RETURN emp%Rowtype; --声明REF游标类型
    rc_emp ref_cur_emp; --声明游标变量
    emp_row emp%ROWTYPE;
    BEGIN
    OPEN rc_emp FOR --打开游标,并且绑定要查询的语句
    SELECT * FROM emp;
    LOOP
    FETCH rc_emp INTO emp_row; --提取游标
    EXIT WHEN rc_emp%NOTFOUND;
    dbms_output.put_line(rc_emp%ROWCOUNT||' '||emp_row.empno||' '||emp_row.ename||' '||emp_row.sal);
    END LOOP;
    CLOSE rc_emp; --关闭游标
    END;

    --------------------------------------------

    --动态游标,弱类型游标
    DECLARE
    TYPE ref_cur IS REF CURSOR; --声明REF游标类型
    rc_emp ref_cur; --声明游标变量
    emp_row emp%ROWTYPE;
    v_no emp.empno%TYPE;
    v_name emp.ename%TYPE;
    v_sal emp.sal%TYPE;
    v_dname dept.dname%TYPE;
    BEGIN
    OPEN rc_emp FOR --打开游标,并且绑定要查询的语句
    SELECT * FROM emp;
    dbms_output.put_line('员工信息表!');
    LOOP
    FETCH rc_emp INTO emp_row; --提取游标
    EXIT WHEN rc_emp%NOTFOUND;
    dbms_output.put_line(rc_emp%ROWCOUNT||' '||emp_row.empno||' '||emp_row.ename||' '||emp_row.sal);
    END LOOP;
    CLOSE rc_emp; --关闭游标

    --对应多个查询语句
    dbms_output.put_line('员工部门信息表!');
    OPEN rc_emp FOR SELECT e.empno,e.ename,e.sal,d.dname
    FROM emp e,dept d WHERE e.deptno = d.deptno;
    LOOP
    FETCH rc_emp INTO v_no,v_name,v_sal,v_dname;
    EXIT WHEN rc_emp%NOTFOUND;
    dbms_output.put_line(rc_emp%ROWCOUNT||' '||v_no||' '||v_name||' '||v_sal||' '||v_dname);
    END LOOP;
    END;

    -----1显示游标一般用来循环获取结果集,能使fom游标就使用fom游标

           2隐式游标一般用来判断dml语句是否成功执行

           3 动态游标往往结合存储过程使用,如查询需要动态改变。

  • 相关阅读:
    SQL 通配符
    正则表达式
    与运算(&)、或运算(|)、异或运算(^)、右移运算符(>>>)本质介绍
    博客园博客目录自动生成(页面目录)
    Linux查看并杀死被占用的端口
    Eclipse的环境配置
    L-Rui
    Web页面弹出窗口代码大全
    linux-用户
    linux-网络
  • 原文地址:https://www.cnblogs.com/hjiongjiong/p/4217584.html
Copyright © 2020-2023  润新知