189 8069 5689

oracle如何写异常 oracle函数异常处理

oracle 用户自定义异常

--设:要抛出的异常叫做ex_no_data,要判断是否小于0的变量为:v_data,则:

专注于为中小企业提供网站制作、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业宁安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

DECLARE

--声明异常

ex_no_data EXCEPTION; -- Exception to indicate an error condition

v_data NUMBER; -- Variable to hold data

--v_ErrorCode NUMBER; -- Variable to hold the error message code

--v_ErrorText VARCHAR2(200); -- Variable to hold the error message text

BEGIN

--抛出异常

IF v_data 0 THEN --(括号内填抛出异常的条件)

RAISE ex_no_data;

END IF;

--捕捉异常

EXCEPTION

WHEN ex_no_data THEN

dbms_output.put_line(v_data);

--捕捉其他异常,并获得 捕获异常的内容

WHEN OTHERS THEN

null;

-- v_ErrorCode := SQLCODE;

-- v_ErrorText := SUBSTR(SQLERRM, 1, 200);

-- 注意这里用SUBSTR 来截取错误消息

--dbms_output.put_line(v_ErrorCode || '::'||v_ErrorText);

END;

/

---另可参考我之前的一个帖子:

oracle 存储过程异常处理

先建一个错误跟踪表

create sequence s_error_id;

CREATE TABLE ERROR_RECORD

(

ERROR_ID NUMBER(10) primary key,

ERROR_CODE NUMBER(10),

ERROR_MSG VARCHAR2(2000),

ERROR_DATE DATE,

ERROR_PROGRAM VARCHAR2(200)

);

--------在过程的例外里向跟踪表写入错误信息:

create or replace procedure day_task is

v_sqlcode ERROR_RECORD.ERROR_CODE%type;

v_msg ERROR_RECORD.error_msg%type;

begin

------program body

exception when others then

--记录错误信息表

v_sqlcode :=sqlcode;

v_msg :=sqlerrm;

insert into error_record(error_code,error_msg,error_date,error_program)

values (v_sqlcode,v_msg,sysdate,‘day_task’);

end;

oracle存储过程异常怎么写

begin  

select into ......................;

exception  

when errorException then  

.................

when others then  

..................

end;

oracle 中的 exception when others then 捕获异常 在db2中怎么写

db2中类似oracle的异常捕获写法:

举例如下:

CREATE PROCEDURE OUT_LANGUAGE (...,OUT returnCode INTEGER, OUT returnMsg CHAR(32))

-- returnCode 返回执行中的的错误代码

-- returnMsg 返回执行中的的错误描述

SPECIFIC SQL_OUT_LANGUAGE

LANGUAGE SQL

BEGIN

DECLARE SQLCODE INTEGER DEFAULT 0;

DECLARE SQLSTATE CHAR(5) DEFAULT ´00000´;

DECLARE errorLabel CHAR(32) DEFAULT ´´;

......

-- in case of no data found

DECLARE CONTINUE HANDLER FOR NOT FOUND

BEGIN

SET returnCode = SQLCODE;

-- 也可以设置为 SET returnCode = 0; 因为这个DECLARE是为了忽略NOT FOUND的执行结果

END;

-- in case of SQL error

DECLARE EXIT HANDLER FOR SQLEXCEPTION

BEGIN

SET returnCode = SQLCODE;

SET returnMsg = errorLabel;

END;

Oracle 存储过程怎么抛出异常

你说的异常是什么意思?如果是,执行中的错误,那么可以用“调试”,不过需要有一个系统权限的拥护才能调试,权限好象是什么debug XXXXX。

如果说的是有时执行因为这样那样的数据问题出现的异常,那么一般都是通过exception来抛出异常的,这样的抛出的异常,你可以自己编代码,然后输入一张表内,这样就可以捕获异常了。如果1表示没有主键,2表示数据超长等等。具体的写法网上很多,这里就不写了。

如何处理用户自定义异常 oracle

当与一个异常错误相关的错误出现时,就会隐含触发该异常错误。用户定义的异常错误是通过显式使用 RAISE 语句来触发。当引发一个异常错误时,控制就转向到 EXCEPTION块异常错误部分,执行错误处理代码。

对于这类异常情况的处理,步骤如下:

1、在PL/SQL 块的定义部分定义异常情况:

异常情况  EXCEPTION;

2、RAISE 异常情况;

3、在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

例:更新指定员工工资,增加100;

DECLARE

v_empno employees.employee_id%TYPE :=empno;

no_result  EXCEPTION;

BEGIN

UPDATE employees SET salary = salary+100 WHERE employee_id = v_empno;

IF SQL%NOTFOUND THEN

RAISE no_result;

END IF;

EXCEPTION

WHEN no_result THEN 

DBMS_OUTPUT.PUT_LINE('数据更新语句失败了!');

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);

END;

1、弹出错误框:

示例代码:

declare

v_count number;

begin

select count(*) into v_count from dept;

if v_count 10 then

raise_application_error(-20001,'数量小于10');

end if;

end;

执行结果:

2、控制台显示:

示例代码:

declare

v_count number;

my_exp exception;

begin

select count(*) into v_count from dept;

if v_count 10 then

raise my_exp;

end if;

exception

when my_exp then

dbms_output.put_line('数量小于10');

when others then

dbms_output.put_line('其他异常');

end;

执行结果:

PS:ORACLE 用户自定义异常小例子:

CREATE OR REPLACE PROCEDURE test_Exception_byLeejin

(

ParameterA IN varchar,

ParameterB IN varchar,

ErrorCode OUT varchar --返回值,错误编码

)

AS

/*以下是一些变量的定义*/

V NUMBER;

V nvarchar();

V NUMBER;

APP_EXP EXCEPTION; --自定义异常

BEGIN

ErrorCode :='';

IF (ParameterA=ParameterB) THEN

ErrorCode := 'ParameterA = ParameterB';

RAISE APP_EXP; -- 抛出异常

END IF;

EXCEPTION

WHEN APP_EXP THEN --在处理异常

RAISE_APPLICATION_ERROR(-,ErrorCode);

WHEN OTHERS THEN

RAISE_APPLICATION_ERROR(-,'未知异常');

END;


标题名称:oracle如何写异常 oracle函数异常处理
本文路径:http://jkwzsj.com/article/hghhde.html

其他资讯