`

oracle procdure loop 内异常后继续下一次循环

阅读更多

1)oracle  procdure 内异常处理


     for num in 1..total loop

        begin

         strsql := 'select ssid from (select temp.sp_id as ssid, rownum as ssnum
                from tempInfo temp) where ssnum='|| num;
         execute immediate strsql into tempspid;

         strsql := 'update tempInfo set black_count =
                (select count(black.id) as blackcount
                from nm_black_and_object black where black.sp_id =' || tempspid || ')
                where sp_id=' || tempspid;
         execute immediate strsql;

        
         table_name := 'NM_NET_USER_'||tempspid;

        dbms_output.put_line(table_name);

         strsql := 'update tempInfo set white_count =
                (select count(distinct us.mdn) from NM_NET_USER_' || tempspid || ' us
                where us.status in (1,2,3))
                where sp_id=' || tempspid;
         execute immediate strsql;--此处可能引发 试图不存在异常 ,但是不该影响下面业务处理 

      end ;      
     end loop;

 

 

 

       --办法一 通过一次select 判断试图是否存在 ,如果存在则执行

         strsql := 'select count(*) from user_tables where table_name='''||table_name||'''';
         execute immediate strsql INTO counter ;

        

         IF counter > 0 THEN

               strsql := 'update tempInfo set white_count =
                (select count(distinct us.mdn) from NM_NET_USER_' || tempspid || ' us
                where us.status in (1,2,3))
                where sp_id=' || tempspid;
         execute immediate strsql;--此处可能引发 试图不存在异常 ,但是不该影响下面业务处理     

        
         END IF ;

 

    ---办法2 通过EXCEPTION

          strsql := 'update tempInfo set white_count =
                (select count(distinct us.mdn) from NM_NET_USER_' || tempspid || ' us
                where us.status in (1,2,3))
                where sp_id=' || tempspid;
         execute immediate strsql;--此处可能引发 试图不存在异常 ,但是不该影响下面业务处理  

         exception

         when others then null ;  

     

分享到:
评论

相关推荐

    sql 2000 stored procdure and xml

    sql 2000 stored procdure

    sql server 2000 stored procdure and xml

    sql 2000 stored procdure

    Oracle触发器与存储过程高级编程1

    Oracle触发器与存储过程 实例,使用 高级编程 存储过程 触发器 E-MAIL 及错误处理。 共4个部分.

    pics_procdure

    在"Pics_procdure-master"这个文件夹名中,"master"可能指的是一个包含整个流程的主代码库或项目。这可能是一个GitHub仓库,包含了实现以上步骤的代码示例、脚本或教程。 总之,"Pics_procedure"可能是一个详细介绍...

    SQL21日自学通

    一次创建多个同义字364 为你的表创建视图368 在一个计划中清除其所有的表的内容369 使用SQL 来生成SHELL 脚本371 再建表和索引372 总结373 问与答373 校练场373 练习374 第18 天PL/SQL 简介376 目标376 入门376 在...

    sql server 2000 stored prucdure and xml

    sql 2000 stored procdure

    CodeSmith代码生成模板(Access和Sql server) C#语言。

    文件中包括两种5个文件: 1、Oledb 包括使用access...4、Model 包含一个一次生成所有Model中实体类的模板。 CodeSmith模板可以由用户自定义。其语法与C#语法类似。 ****************请支持原创****************

    SQL Server存储过程模板

    - 通过`raiserror`抛出异常并跳转到错误处理部分。 - 事务管理确保数据的一致性和完整性。 #### 四、总结 此存储过程模板提供了创建或修改SQL Server存储过程的基础结构,通过详细的注释和标准化的格式,有助于提高...

    asp+sqlserver2005万能分页存储过程源码

    asp+sqlserver2005万能分页存储过程源码 sqlserver2005源码下载,很灵活的

Global site tag (gtag.js) - Google Analytics