oracle的
scott使用者
1、儲存過程示例:為指定的職工在原工資的基礎上長10%
的工資
sql>createorreplaceprocedureraisesalary(empidinnumber)
aspsalemp.sal%type;
begin
selectsalintopsalfromempwhereempno=empid;
updateempsetsal=sal*1.1whereempno=empid;
dbms_output.put_line('員工號
:'||empid||'
漲工資前
'||psal||'漲工資後
'||psal*1.1);
end;
procedurecreated
sql>setserveroutputon
sql>execraisesalary(7369);
員工號:7369
漲工資前
800漲工資後
880
pl/sqlproceduresuccessfullycompleted
sql>/**/
查詢某職工的總收入
createorreplacefunctionqueryempsalary(empidinnumber)
returnnumber
aspsalnumber;--定義變數儲存員工的工資
pcommnumber;--定義變數儲存員工的獎金
begin
selectsal,commintopsal,pcommfromempwhereempno=empid;
returnpsal*12+nvl(pcomm,0);
end;
functioncreated
sql>declare
v_salnumber;
begin
v_sal:=queryempsalary(7934);
dbms_output.put_line('salaryis:'||v_sal);
end;
salaryis:15600
pl/sqlproceduresuccessfullycompleted
sql>begin
dbms_output.put_line('salaryis:'||queryempsalary(7934));
end;
salaryis:15600
pl/sqlproceduresuccessfullycompleted
3、建立觸發器示例1
:限制非工作時間向資料庫插入資料
sql>createorreplace
triggersecurityemp
beforeinsertonemp
declare
begin
ifto_char(sysdate,'day')in('星期四
','星期六
','星期日')
orto_number(to_char(sysdate,'hh24'))notbetween8and18then
');
endif;
end;
triggercreated
4、建立觸發器示例2
:確認資料(檢查
emp表中
sal的修改值不低於原值)
sql>createorreplacetriggerchecksal
beforeupdateofsalonemp
foreachrow
declare
begin
if:new.sal<:old.salthen
');
endif;
end;
triggercreated
儲存過程和觸發器
儲存過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。簡單的敘述 在大型資料庫系統中,儲存過程和觸發器具有很重要的作用。無論是儲存過程還是觸發器,都是s...
儲存過程和觸發器
1 什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要...
觸發器和儲存過程
觸發器用處還是很多的,比如校內網 開心網 facebook,你發乙個日誌,自動通知好友,其實就是在增加日誌時做乙個後觸發,再向通知表中寫入條目。因為觸發器效率高。而uch沒有用觸發器,效率和資料處理能力都很低。儲存過程的實驗步驟 mysql delimiter mysql create proced...