Oracle筆記 七 PL SQL 異常處理

2021-09-22 07:10:55 字數 2798 閱讀 4426

--異常處理
declare
snum number := 0;
begin
snum := 5 / snum;
dbms_output.put_line(snum);
exception
when others then
dbms_output.put_line('is error!');
end;
--自定義異常
declare
ex_custom_invaild_age exception; --自定義的異常myerr
age int;
begin
age := &請輸入年齡;
if (age < 0) then
raise ex_custom_invaild_age; --引發自定義異常
else
dbms_output.put_line('年齡是:' || age);
end

if;

exception
when ex_custom_invaild_age then
dbms_output.put_line('非法的年齡');
end;
--引發應用程式異常
declare
age int;
begin
age := &請輸入年齡;
if (age < 0) then
else
dbms_output.put_line('年齡是:' || age);
end

if;

end;
--非預定義異常
declare
ex_custom_error exception;
pragma exception_init(ex_custom_error, -1); --把乙個編號和乙個自定義異常關聯,
--相當於把-1編號的異常命名為ex_custom_error,這樣就可以捕獲這種異常
begin
insert into dept values(10, 'aaa', 'bbb');
exception
when ex_custom_error then
dbms_output.put_line('部門編號已經存在');
end;
--異常處理
declare
vsal emp.sal%type;
begin
select sal into vsal from emp;
exception
when too_many_rows then
dbms_output.put_line('多條資料');
when others then
dbms_output.put_line('error');
end;
declare
vsal emp.sal%type;
begin
select sal into vsal from emp where empno = 1;
exception
when no_data_found then
dbms_output.put_line('沒有資料');
when others then
dbms_output.put_line('error');
end;
--異常日誌處理
create

table errorlog (

id number primary

key,

errcode number,
errmsg varchar2(1024),
errdate date
);
--建立序列,從1開始,每次加1
create

sequence seq_errorlog_id start

with 1 increment by 1;

declare
vdeptno dept.deptno%type := 10;
verrcode number;
verrmsg varchar2(1024);
begin
delete

from dept where deptno = vdeptno;

commit;
exception
when others then
rollback;
verrcode := sqlcode;
verrmsg := sqlerrm;
insert into errorlog values(seq_errorlog_id.nextval, verrcode, verrmsg, sysdate);
commit;
end;
select * from errorlog;

oracle學習筆記 PL SQL

pl sql 它是一種過程化語言,在pl sql中可以使用if語句或是log語句,以實現控制程式的執行流程,甚至可以定義變數,以至在語句之間傳遞資料資訊,這樣pl sql語言就能夠實現操控程式處理的細節,因此使用pl sql語句可以實現比較複雜的業務邏輯,它是oracle的專用語言,它是對標準sql...

oracle筆記(九)PL SQL程式設計

pl sql 是oracle 的專用語言,它對標準的sql 語言的擴充套件.sql 語句可以巢狀在pl sql 語言中,並結合處理語句。pl sql 程式結構 使用了程式塊的結構組織的 最簡單的程式塊是一種被稱為 匿名塊 的程式塊,匿名塊是指不會被oracle 儲存並且不能夠重用程式塊。pl sql...

Oracle筆記 十 PL SQL儲存過程

or replace 建立或替換,如果存在就替換,不存在就建立create or replace procedure piscursor cisselect from dept2 for update beginfor row record in c loopif row record.deptno...