【oracle游标三】动态游标

利用oracle动态游标实现动态SQL循环遍历

sql示例:

create or replace procedure cursortest6 is
  TYPE ref_cursor_type IS REF CURSOR; --定义一个动态游标
  t_user     ref_cursor_type;
  tablename  varchar2(200) default 'emp';
  v_sql      varchar(4000);
  v_empno    EMP.EMPNO%TYPE;
  v_ename    EMP.ENAME%TYPE;
  v_job      EMP.JOB%TYPE;
  v_mgr      EMP.MGR%TYPE;
  v_hiredate EMP.HIREDATE%TYPE;
  v_sal      EMP.SAL%TYPE;
  v_comm     EMP.COMM%TYPE;
  v_deptno   EMP.DEPTNO%TYPE;
begin
  --也可以使用连接符拼接成一条完整SQL
  v_sql := 'select * from ' || tablename; --动态sql
  --打开游标
  open t_user for v_sql;
  loop
    fetch t_user
      into v_empno,
           v_ename,
           v_job,
           v_mgr,
           v_hiredate,
           v_sal,
           v_comm,
           v_deptno;
    exit when t_user%notfound;
    insert into emp_rec
    values
      (v_empno, v_ename, v_job, v_mgr, v_hiredate, v_sal, v_comm, v_deptno);
  end loop;
  close t_user;
  commit;
end cursortest6;

  TYPE ref_cursor_type IS REF CURSOR; --定义一个动态游标
  t_user     ref_cursor_type;--游标变量

 --也可以使用连接符拼接成一条完整SQL
  v_sql := 'select * from ' || tablename; --动态sql
  --打开游标
  open t_user for v_sql;

使用open打开一个动态sql。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值