儲存過程及觸發器

2021-09-02 20:20:50 字數 4038 閱讀 1290

了解儲存過程的概念、優點

熟練掌握建立儲存過程的方法

熟練掌握儲存過程的呼叫方法

了解觸發器的概念、優點

掌握觸發器的方法和步驟

掌握觸發器的使用

oracle,plsql

功能要求:

借書時要求輸入借閱流水號,借書證號,圖書編號。(即該儲存過程有3個輸入引數)

借書時,借書日期為系統時間。

圖書的是否借出改為『是』

create or replace procedure lendbook

(v_bo_id borrowing.bo_id%type,

v_r_number readers.r_number%type,

v_b_id book.b_id%type)

asbegin

insert into borrowing values(v_bo_id,v_r_number,v_b_id,sysdate, null, null, null);

update book set b_state='是'

where book.b_id = v_b_id;

end;

測試:call lendbook(7,20051001,3007071);

要求達成!

預約時要求輸入預約流水號,借書證號,isbn。(即該儲存過程有3個輸入引數)

儲存過程先檢查輸入的isbn版本的圖書是否都已借出,如果是則進行預約,否則提示「該書目有可借圖書,請查詢」。

預約時間為系統時間。

create or replace procedure bookingbook

(v_y_id yuyue.y_id%type,

v_r_number readers.r_number%type,

v_bi_isbn book.bi_isbn%type)

as v_borrow number;

begin

select count(*) into v_borrow from book

where book.b_state = '否' and book.bi_isbn = v_bi_isbn;

if v_borrow = 0 then

insert into yuyue(y_id,r_number,bi_isbn,y_time)

values(v_y_id,v_r_number,v_bi_isbn,sysdate);

commit;

else

dbms_output.put_line('該書目有可借圖書,請查詢');

end if;

end;

測試:call bookingbook(2,20062001,9787010073750);

還書時要求輸入借書證號,圖書編號,罰款分類號(即該儲存過程有3個輸入引數)。

還書日期為系統時間。

圖書的是否借出改為『否』。

create or replace procedure sendbook

(v_r_number readers.r_number%type,

v_b_id borrowing.b_id%type,

v_f_id f.f_id%type)

asbegin

update borrowing

set returndate = sysdate,f_id = v_f_id

where

v_r_number = borrowing.r_number and v_b_id = borrowing.b_id;

update book

set book.b_state = '否'

where v_b_id = book.b_id;

end;

測試:call sendbook(20051001,2001231,null);

該儲存過程要求:

(1)借書時輸入借書證號,圖書編號。(即該函式有2個輸入引數)

(2)借書時,借書日期為系統時間。

*該儲存過程主體部分只有insert into語句。

create or replace procedure lend_book

( v_r_number in char,

v_b_id in char

)as v_borrow book.b_state%type;

begin

select b_state into v_borrow from book where book.b_id = v_b_id;

if v_borrow = '否' then

insert into borrowing(r_number,b_id,lenddate) values(v_r_number,v_b_id,sysdate);

update book set b_state = '是';

commit;

else

dbms_output.put_line('該書已被借出!');

update book set b_state = '是'

where b_id = :new.b_id;

end;

測試:

insert into borrowing values(7,20051001,2001231,sysdate,null,null,null);

commit;

插入資料後:

觸發器及儲存過程 procedure

儲存過程 procedure 建立乙個名為p1的儲存過程,功能是查詢成績表中成績為空的學生學號,姓名 執行p1。create procedure p1 asselect sno,sname from student where sno in select sno from sc where grad...

觸發器 儲存過程

1 為productsales資料庫中的產品表建立乙個名為update pno的update觸發器,該觸發器的作用是禁止更新產品表中的 productname 欄位的內容。並用update語句修改產品表中第一條記錄為 1 hp1500 印表機 2000 要求顯示 不能修改產品名稱 的警告資訊。cre...

儲存過程 觸發器

觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,就會自動執行觸發器所定義的sql 語句,從而確保對資料的處理必須符合由這些sql 語句所定義的規則。觸發器的主要作用就是其能夠實現由主鍵和外來鍵...