oracle存储过程异常捕获

oracle存储过程异常捕获学习,执行及演示过程:

存储过程:

    CREATE OR REPLACE PROCEDURE sp_test_2
    (
       param1 in int,     --输入参数
       param2 in int,
       out_return out varchar2 --返回结果
    )
    is
       --全局变量
       val int;
       errorException exception; --申明异常
       errorCode number; --异常代号
       errorMsg varchar2(1000); --异常信息
       flag varchar2(10);
    begin
         flag := ‘true‘;
         out_return := ‘flag=‘ || flag || ‘,errorCode=‘ || errorCode || ‘,errorMsg=‘ || errorMsg;
         val := param1/param2;
         --/*
         exception
             when errorException then
                  errorCode := SQLCODE;
                  errorMsg := SUBSTR(SQLERRM, 1, 200);
                  flag := ‘false‘;
                  out_return := ‘flag=‘ || flag || ‘,errorCode=‘ || errorCode || ‘,errorMsg=‘ || errorMsg;
             when others then
                   errorCode := SQLCODE;
                   errorMsg := SUBSTR(SQLERRM, 1, 200);
                   flag := ‘false‘;
                   out_return := ‘flag=‘ || flag || ‘,errorCode=‘ || errorCode || ‘,errorMsg=‘ || errorMsg;
         --dbms_output.put_line(errorCode || ‘,‘ || errorMsg);
         --*/
    end sp_test_2;  

演示存储过程:

    DECLARE
       out_return varchar2(1000);
       val int; --全局变量
       errorException exception; --申明异常
       errorCode number; --异常编码
       errorMsg varchar2(1000); --异常信息
       flag varchar2(10);
    begin
         flag := ‘true‘;
         out_return := ‘flag=‘ || flag || ‘,errorCode=‘ || errorCode || ‘,errorMsg=‘ || errorMsg;
         val := 1/0;
         exception  --异常捕捉,不要把有需要的代码放在异常捕捉后面,有异常才会执行异常代码下所有代码,没有异常不会执行
             when errorException then
                  errorCode := SQLCODE;
                  errorMsg := SUBSTR(SQLERRM, 1, 200);
                  flag := ‘false‘;
                  out_return := ‘flag=‘ || flag || ‘,errorCode=‘ || errorCode || ‘,errorMsg=‘ || errorMsg;
             when others then
                   errorCode := SQLCODE;
                   errorMsg := SUBSTR(SQLERRM, 1, 200);
                   flag := ‘false‘;
                   out_return := ‘flag=‘ || flag || ‘,errorCode=‘ || errorCode || ‘,errorMsg=‘ || errorMsg;  

         dbms_output.put_line(out_return);
    end;  

sqlplus中执行存储过程:

    DECLARE
         out_return varchar2(1000);
    begin
         sp_test_2(1,0,out_return);
         dbms_output.put_line(out_return); --打印结果
    end;  

执行存储过程 1除以0 结果:

原文地址:https://www.cnblogs.com/xwb583312435/p/9055963.html

时间: 2024-10-09 07:35:29

oracle存储过程异常捕获的相关文章

Oracle存储过程中异常Exception的捕捉和处理

Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Varchar2) AUTHID CURRENT_USER AS --声明异常 some_kinds_of_err EXCEPTION; -- Exception to indicate an error condition v_ErrorCode NUMBER; -- Variable to hold

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

Oracle存储过程可以有无参数存储过程和带参数存储过程. 一.无参程序过程语法 create or replace procedure NoParPro as ; begin ; exception //存储过程异常 ; end;         二.带参存储过程实例 create or replace procedure queryempname(sfindno emp.empno%type) as         sName emp.ename%type;         sjob emp

oracle存储过程创建语法及常见异常

oracle存储过程创建语法及常见异常: oracle存储过程语法: CREATE[ORReplace]PROCEDURE[schema.]procedure_name [(argument[{IN|OUT|INOUT}]datatype, ... argument[{IN|OUT|INOUT}]datatype)] {IS|AS} [descriptionpart说明部分] BEGIN SQLSTATEMENT语句序列 [EXCEPTION例外处理] END[procedureName过程名]

oracle 存储过程 ,触发器练习

/*以下代码是对emp表进行显示宽度设置 */col empno for 9999;col ename for a10;col job for a10;col mgr for 9999;col hiredate for a12;col sal for 9999;col comm for 9999;col deptno for 99;col tname for a12;set pagesize 50; //----------------------------------------------

Oracle 存储过程异常处理

Oracle 存储过程异常处理 1.异常的优点    如果没有异常,在程序中,应当检查每个命令的成功还是失败,如  BEGIN  SELECT ...  -- check for ’no data found’ error  SELECT ...  -- check for ’no data found’ error  SELECT ...  -- check for ’no data found’ error  这种实现的方法缺点在于错误处理没有与正常处理分开,可读性差,使用异常,可以方便处理

oracle存储过程实例

oracle存储过程实例 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储过程有非常多长处,详细归纳例如以下: * 存储过程和函数以命名的数据库对象形式存储于数据库其中.存储在数据库中的长处是非

Oracle 存储过程

存储过程:就是一组用于完成特定数据库功能的SQL 语句集,该SQL语句集经过编译后存储在数据库系统中.在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作. Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. 1 create or replace procedure 过程名 2 as ...; --声明语句段 3 begin 4 ...; --执行语句段 5 exception --异常处理语句段 6 ...

oracle 存储过程的基本语法

原文:oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字(    参数1 IN NUMBER,    参数2 IN NUMBER) IS变量1 INTEGER :=0;变量2 DATE;BEGIN END 存储过程名字 2.SELECT INTO STATEMENT  将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条  记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)  例子:  

Oracle存储过程的学习

存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值范围); Begin Select count(*) into 变量1 from 表A where列名=param1: If (判断条件) then Select 列名 into 变量2 from 表A where列名=param1: Dbms_output.Put_line('打印信息'); El