十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
begin??

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)綿陽,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
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_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;
當(dāng)與一個異常錯誤相關(guān)的錯誤出現(xiàn)時,就會隱含觸發(fā)該異常錯誤。用戶定義的異常錯誤是通過顯式使用?RAISE?語句來觸發(fā)。當(dāng)引發(fā)一個異常錯誤時,控制就轉(zhuǎn)向到?EXCEPTION塊異常錯誤部分,執(zhí)行錯誤處理代碼。
對于這類異常情況的處理,步驟如下:
1、在PL/SQL?塊的定義部分定義異常情況:
異常情況??EXCEPTION;
2、RAISE?異常情況;
3、在PL/SQL?塊的異常情況處理部分對異常情況做出相應(yīng)的處理。
例:更新指定員工工資,增加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('數(shù)據(jù)更新語句失敗了!');
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,'數(shù)量小于10');
end if;
end;
執(zhí)行結(jié)果:
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('數(shù)量小于10');
when others then
dbms_output.put_line('其他異常');
end;
執(zhí)行結(jié)果:
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;