如何实现Oracle数据库中的动态游标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现Oracle数据库中的动态游标相关的知识,希望对你有一定的参考价值。

    create or replace procedure P_TEST_SQL is    

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

    tablename varchar2(200) default \'ess_client\';    

    v_sql varchar2(1000);    

    mobile varchar2(15);    

    usrs ref_cursor_type;    

    begin    

    --使用连接符拼接成一条完整SQL     

    v_sql := \'select usrmsisdn from \'||tablename||\' where rownum < 11\';    

    --打开游标     

    open usrs for v_sql ;    

    loop    

    fetch usrs into mobile;     

    exit when usrs%notfound;    

    insert into tmp(usrmsisdn) values(mobile);    

    end loop;    

    close usrs;    

    commit;    

    end P_TEST_SQL;  

参考技术A declare --类型定义 cursor c_job is select empno,ename,job,sal from emp where job='MANAGER'; --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型 c_row c_job%rowtype;begin for c_row in c_job loop dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal); end loop;end; 参考技术B For 循环游标
(1)定义游标
(2)定义游标变量
(3)使用for循环来使用这个游标declare --类型定义 cursor c_job is select empno,ename,job,sal from emp where job='MANAGER'; --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型 c_row c_job%rowtype;begin for c_row in c_job loop dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal); end loop;end;

以上是关于如何实现Oracle数据库中的动态游标的主要内容,如果未能解决你的问题,请参考以下文章

oracle 存储过程执行动态SQL 返回结果给游标,外部程序获得dataset结果集。

动态更改oracle游标中的列

oracle动态查询通过sql获取游标变量

oracle sql动态查询以选择游标中的列

oracle存储过程中循环for in是如何使用的

oracle 动态游标 传参的问题