oracle 游标循环, 查询,异常捕获,继续执行

declare
       --类型定义
       strsql string(500);
        v_ErrorCode NUMBER;           -- Variable to hold the error message code  
        v_ErrorText VARCHAR2(200);    -- Variable to hold the error message text  
       cursor c_eventstate
       is
       Select  CampaignId,phonenumber,PolicyNumber from mkt_eventstate a where synstate =0 and packagestate = 2 and errorcode = 6;
       --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
       c_row c_eventstate%rowtype;
begin
       for c_row in c_eventstate loop
          begin
          strsql:=‘select * from mkt_userprizeinfo t where t.campaignid=‘||c_row.CampaignId||‘ and t.userid=‘||c_row.phonenumber||‘ and t.PolicyNumber=‘‘‘||c_row.PolicyNumber||‘‘‘‘;
          execute immediate strsql ;
         dbms_output.put_line(c_row.CampaignId||‘-‘||c_row.phonenumber||‘-‘||c_row.PolicyNumber);
        -- RAISE_APPLICATION_ERROR(-20001,‘数值不能为0‘);
          EXCEPTION
         --捕捉异常
         WHEN others THEN
           begin
              v_ErrorCode := SQLCODE;  
              v_ErrorText := SUBSTR(SQLERRM, 1, 200); 
           DBMS_OUTPUT.put_line(‘捕获了错误begin‘);
           dbms_output.put_line(c_row.CampaignId||‘-‘||c_row.phonenumber||‘-‘||c_row.PolicyNumber||‘-‘||v_ErrorCode || ‘::‘||v_ErrorText);
           DBMS_OUTPUT.put_line(‘捕获了错误end‘);
           end;
         end;
       
       end loop;    
end;

时间: 2024-10-12 06:34:14

oracle 游标循环, 查询,异常捕获,继续执行的相关文章

Oracle游标-循环查询表中数据(表名),并执行

Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount varchar2(100); --定义一个游标变量 cursor c_job is --查询该表中的所有表名 select tablename from tbname; c_row c_job%rowtype; begin --循环待处理数据,即以上查出的结果集 for c_row in c_job loop ---执行语句 from

ORACLE游标循环【转】

ORACLE游标循环有几种用法,下面分别介绍一下. 首先定义游标和变量 CURSOR C1 IS SELECT  eNAME,ejob FROM emp WHERE deptno=10; v_NAME VARCHAR2(10); v_job VARCHAR2(10); 第一种:使用loop 循环 open c1; loop fetch c1 into v_name,v_job ; exit when c1%notfound; …… end loop colse c1; 这里需要注意,exit w

Oracle游标循环更新数据案例

declare v_XTXMBH number; v_ZJZJZJRQ varchar2(40); cursor c_job is SELECT XT.XTXMBH AS XTXMBH, QJ.ZJZJZJRQ AS ZJZJZJRQ FROM XTXMXX XT, QJGLXX_ZQL_MID QJ WHERE XT.XTXMBH = QJ.XTXMBH AND XT.XTXMCLRQ >= '20120630' AND (QJ.ZJQHZJRQ IS NULL OR QJ.ZJZJZJRQ

oracle 游标循环中 捕获异常 继续执行

declare       --类型定义         cursor c_eventstate       is       Select  CampaignId,phonenumber,PolicyNumber from mkt_eventstate a where synstate =0 and packagestate = 2 and errorcode = 6;       --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型    

oracle游标:查询并打印员工的姓名和薪水

--查询并打印员工的姓名和薪水 --set serveroutput on /* 1.光标的属性 %found:如果取到了记录就是true否则是false: %notfound: */ declare --定义一个光标 cursor cemp is select ename,sal from emp; --为光标定义对应的变量 pename emp.ename%type; psal emp.sal%type; begin --打开光标 open cemp; loop --取一条记录 into后面

21. oracle游标循环例子

create or replace procedure sp_addProjectQj( ret out number, flowid in number --流程Id) ascursor c_design is select * from LC_VR_Detail where lc_crm_visitreport_Id = flowid and dd_status != 2; c_row c_design%rowtype; v_id number;begin for c_row in c_de

oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理和自定义异常

游标的概念:    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁 盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库.这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率.游标有两种类型:显式游标和隐式游标.在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种 形式的查询和DML操作,系统都会使用一个隐式游标.但是如果要

ORACLE 11G在存储过程里面遍历游标, 调用job任务定时执行

ORACLE存储过程里游标遍历.调用job定时执行 1,第一种使用For 循环 for循环是比较简单实用的方法. 首先,它会自动open和close游标.解决了你忘记打开或关闭游标的烦恼. 其次,自动声明一个记录类型及定义该类型的变量,并自动fetch数据到这个变量. 注意C_ROW 这个变量无需要在循环外进行声明,无需为其指定数据类型.它是一个记录类型,具体的结构是由游标决定的. 这个变量的作用域仅仅是在循环体内. 最后,与该游标关联的所有记录都已经被取回后,循环无条件结束,不必判定游标的%N

js 基础 -- 循环、函数调用 、全局和局部变量、异常捕获、事件

一:循环 for for in <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>循环</title> <meta name="viewport" conte