PL SQL基本操作

2022-02-14 23:29:52 字數 4350 閱讀 1156

1、常規過程化形式

declare

o_booking_flag

char(10

);begin

--call the procedure

destine_ticket('

000000037',

20,'e

',2,

o_booking_flag);

dbms_output.put_line(o_booking_flag);

end;

2、儲存過程

create

orreplace

procedure destine_ticket(i_flightid in

char

, --不需要些型別值

i_luggagelimit

innumber

, i_class_code

inchar

, i_seats

innumber

, o_booking_flag out

char

) is

v_temp

integer

; v_temp1

integer

;begin

begin

select

1into v_temp from flight t1 where t1.flightid=i_flightid and to_number(t1.estdeparturedatetime-sysdate)*

24>=3;

exception --異常捕獲

when no_data_found then

v_temp:=0

; --複製要寫:=

end;

return; --退出儲存過程

end destine_ticket;

異常處理

--

一異常處理的**

--sqlcode 異常編號

--sqlerrm 訊號字串

/*在plsql 塊中格式

declare

變數begin

**塊exception

when 異常的名稱 then

如生上面的異常時做的具體工作。

end;

*/set serveroutput on

;create

orreplace

procedure

pr12

as--

定義乙個int變liang

v_age integer

;v_name

varchar(30

);begin

v_age:=89

;--通過select給v_name設定值

--修改成過程

select name into v_name from stud where id=1;

dbms_output.put_line(

'沒有出錯');

exception

when value_error then

sys.dbms_output.put_line(

'數值錯誤');

when no_data_found then

sys.dbms_output.put_line(

'沒有資料');

when others then

sys.dbms_output.put_line(sqlcode||'

你出錯了'||

sqlerrm);

end;exec

pr12();

-----------------------------------------

--自定義異常自己丟擲異常/

/*定義乙個自己的異常

myexception exception;

丟擲異常

raise myexception;

處理自己的異常:

exception

when myexception then

....

*/set serveroutput on

;declare

myex exception;

begin

dbms_output.put_line(

'這裡沒錯');

raise myex;

dbms_output.put_line(

'不會輸出,前面丟擲異常');

--處理異常

exception

when myex then

dbms_output.put_line(

'自己的異常

'||sqlcode||''

||sqlerrm);

when others then

dbms_output.put_line(

'不知知道什麼錯誤

'||sqlcode||

sqlerrm);

end;

---出錯直接丟擲

declare

begin

dbms_output.put_line(

'no errors');

--直接丟擲

20000, 'a'

);dbms_output.put_line(

'go okk....');

exception

when others then

dbms_output.put_line(sqlcode||'

'||sqlerrm);

end;

3、過程呼叫

declare

o_booking_flag

char(10

);begin

--call the procedure

destine_ticket(i_flightid =>

'000000037',

i_luggagelimit

=>20,

i_class_code

=>'e

',i_seats

=>2,

o_booking_flag

=>

o_booking_flag);

end;

4、觸發器

注意,一般刪除、更新等觸發器,不能呼叫觸發器表本身

create

orreplace

trigger

flight_staff_check

before

insert

orupdate

ordelete

onflight

foreach row

declare

--local variables here

cap_id char(100

); fir_id

char(100

); flag

integer

;begin

if inserting then

--select :new.captainstaffid into cap_id,:new.firstofficerstaffid into fir_id from dual;

cap_id:=

:new.captainstaffid;

fir_id:

=:new.firstofficerstaffid;

endif;

if updating then

--select :new.captainstaffid into cap_id,:new.firstofficerstaffid into fir_id from dual;

cap_id:=

:new.captainstaffid;

fir_id:

=:new.firstofficerstaffid;

endif;

if deleting then

--select :old.captainstaffid into cap_id,:old.firstofficerstaffid into fir_id from dual;

cap_id:=

:old.captainstaffid;

fir_id:

=:old.firstofficerstaffid;

endif;

end

oracle資料庫入門pl sql基本操作

create table tablename id number not null primary key,name varchar 20 create time date,total consumption number 4,2 insert into tablename values 222,s...

plsql 排序 PLSQL基本查詢與排序

課程 一pl sql 基本查詢與排序 本課重點 寫select 語句進行資料庫查詢 進行數學運算 處理空值 使用別名 aliases 連線列 在sql plus 中編輯緩衝,修改 sql scripts order by 進行排序輸出。使用where 字段。一 寫 sql命令 不區分大小寫。sql語...

PL SQL 的基本結構

基於塊結構 pl sql是塊結構語言。塊由declare,begin,exception,end關鍵字劃分,並且劃分為3個不同的區域 3個區域中,只有執行區域是必須的,其他兩個區域都是可選的 declare declaration statements begin execution stateme...