了解儲存過程的概念、優點
熟練掌握建立儲存過程的方法
熟練掌握儲存過程的呼叫方法
了解觸發器的概念、優點
掌握觸發器的方法和步驟
掌握觸發器的使用
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 語句所定義的規則。觸發器的主要作用就是其能夠實現由主鍵和外來鍵...