ORACLE 动态游标的使用

简介: ORACLE 动态游标的使用

动态游标可以遍历动态的表,

格式:

TYPE 游标类型 IS REF CURSOR; --定义一个动态游标 
游标名  游标类型;

如果查询的表的数据不同的,动态变化的,这时候可以用动态游标。

需要注意的是,动态游标的定义,

在普通存储过程中:需要放在 is 后面的第一行。

动态游标通过:open 游标 for 字符串,形式使用,遍历。

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;

下面是一个实例

CREATE OR REPLACE PROCEDURE DDGZ1 --订单跟踪

(

 P_FLAG VARCHAR, --订单类型

 P_OPERATE VARCHAR, --操作类型

 P_BH VARCHAR --传入的编号ID

 )

 IS

  TYPE REF_CURSOR_TYPE IS REF CURSOR;

  V_CUR_CKD REF_CURSOR_TYPE;

BEGIN

  OPEN V_CUR_CKD FOR 'select v_ERP,v_DRP,v_jxsmc,v_jxs,v_DWMC,v_czr,v_jlsj from tmp_DDGZ1';

  FETCH V_CUR_CKD
    INTO V_ERP, V_DRP, V_JXSMC, V_JXS, V_DWMC, V_CZR, V_JZSJ;

  WHILE V_CUR_CKD%FOUND

   LOOP

    INSERT INTO DRPDDGZJL2
      (JLID, DRP, ERP, JXS, JXSMC, JLSJ, GZJL, CZR, BHID)
    VALUES
      (SYS_GUID(),
       V_DRP,
       V_ERP,
       V_JXS,
       V_JXSMC,
       V_JZSJ,
       V_DWMC || '受托代销成品库接收订单,组织发货',
       V_CZR,
       '出库单' || P_BH);

    FETCH V_CUR_CKD
      INTO V_ERP, V_DRP, V_JXSMC, V_JXS, V_DWMC, V_CZR, V_JZSJ;

  END LOOP;

  CLOSE V_CUR_CKD;

END;
相关文章
|
SQL Oracle 关系型数据库
Oracle的PL/SQL隐式游标:数据的“自动导游”与“轻松之旅”
【4月更文挑战第19天】Oracle PL/SQL中的隐式游标是自动管理的数据导航工具,简化编程工作,尤其适用于简单查询和DML操作。它自动处理数据访问,提供高效、简洁的代码,但不适用于复杂场景。显式游标在需要精细控制时更有优势。了解并适时使用隐式游标,能提升数据处理效率,让开发更加轻松。
|
SQL Oracle 关系型数据库
Oracle游标的使用和优化技巧
Oracle游标的使用和优化技巧
|
SQL Oracle 关系型数据库
Oracle游标的定义与使用
Oracle游标的定义与使用
|
SQL Oracle 关系型数据库
Oracle游标的定义与使用
Oracle游标的定义与使用
|
SQL 存储 Oracle
Oracle数据库中游标的工作原理与优化方法
Oracle数据库中游标的工作原理与优化方法
|
SQL Oracle 关系型数据库
Oracle游标的使用和优化技巧
Oracle游标的使用和优化技巧
|
SQL Oracle 关系型数据库
Oracle游标的定义与使用技巧
Oracle游标的定义与使用技巧
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
324 9
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标自定义异常:数据探险家的“专属警示灯”
【4月更文挑战第19天】Oracle PL/SQL中的游标自定义异常是处理数据异常的有效工具,犹如数据探险家的警示灯。通过声明异常名(如`LOW_SALARY_EXCEPTION`)并在满足特定条件(如薪资低于阈值)时使用`RAISE`抛出异常,能灵活应对复杂业务规则。示例代码展示了如何在游标操作中定义和捕获自定义异常,提升代码可读性和维护性,确保在面对数据挑战时能及时响应。掌握自定义异常,让数据管理更从容。
|
SQL Oracle 安全
Oracle的PL/SQL游标异常处理:从“惊涛骇浪”到“风平浪静”
【4月更文挑战第19天】Oracle PL/SQL游标异常处理确保了在数据操作中遇到的问题得以优雅解决,如`NO_DATA_FOUND`或`TOO_MANY_ROWS`等异常。通过使用`EXCEPTION`块捕获并处理这些异常,开发者可以防止程序因游标问题而崩溃。例如,当查询无结果时,可以显示定制的错误信息而不是让程序终止。掌握游标异常处理是成为娴熟的Oracle数据管理员的关键,能保证在复杂的数据环境中稳健运行。

推荐镜像

更多