begin?
select?into?......................;
exception?
when?errorException?then?
.................
when?others?then?
..................
end;
先建一个错误跟踪表
create sequence s_error_id;
CREATE TABLE ERROR_RECORD
(
ERROR_ID NUMBER(10) primary key,
ERROR_CODE NUMBER(10),
ERROR_DATE DATE,
);
--------在过程的例外里向跟踪表写入错误信息:
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');
当与一个异常错误相关的错误出现时,就会隐含触发该异常错误.用户定义的异常错误是通过显式使用?RAISE?语句来触发.当引发一个异常错误时,控制就转向到?EXCEPTION块异常错误部分,执行错误处理代码.
对于这类异常情况的处理,步骤如下:
①.、在PL/SQL?块的定义部分定义异常情况:
异常情况?EXCEPTION;
例:更新指定员工工资,增加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;
①.、弹出错误框:
示例代码:
declare
v_count number;
select count(*) into v_count from dept;
if v_count 10 then
end if;
执行结果:
my_exp exception;
raise my_exp;
exception
when my_exp then
dbms_output.put_line('数量小于10');
when others then
dbms_output.put_line('其他异常');
PS:ORACLE 用户自定义异常小例子:
CREATE OR REPLACE PROCEDURE test_Exception_byLeejin
ParameterA IN varchar,
ParameterB IN varchar,
ErrorCode OUT varchar --返回值,错误编码
)
AS
/*以下是一些变量的定义*/
V NUMBER;
V nvarchar();
APP_EXP EXCEPTION; --自定义异常
ErrorCode :='';
IF (ParameterA=ParameterB) THEN
ErrorCode := 'ParameterA = ParameterB';
RAISE APP_EXP; -- 抛出异常
END IF;
WHEN APP_EXP THEN --在处理异常
RAISE_APPLICATION_ERROR(-,ErrorCode);
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-,'未知异常');
以上就是土嘎嘎小编为大家整理的oracle如何写异常相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!