oracle儲存過程和觸發器
學習分享必看:javacto.taobao.com
Oracle的Scott使用者
1、儲存過程示例:為指定的職工在原工資的基礎上長10%的工資
SQL> create or replace procedure raiseSalary(empid in number)
as
pSal emp.sal%type;
begin
select sal into pSal from emp where empno=empid;
update emp set sal = sal*1.1 where empno=empid;
dbms_output.put_line('員工號:' || empid || '漲工資前
' || psal || '漲工資後' || psal*1.1);
end;
/
Procedure created
SQL> set serveroutput on
SQL> exec raisesalary(7369);
員工號:7369漲工資前
800漲工資後880
PL/SQL procedure successfully completed
2、儲存函式示例:查詢某職工的年收入。
SQL> /**/
/*
查詢某職工的總收入
*/
create or replace function queryEmpSalary(empid in number)
return number
as
pSal number; --定義變數儲存員工的工資
pComm number; --定義變數儲存員工的獎金
begin
select sal,comm into psal,pcomm from emp where empno = empid;
return psal*12+nvl(pcomm,0);
end;
/
Function created
SQL> declare
v_sal number;
begin
v_sal:=queryEmpSalary(7934);
dbms_output.put_line('salary is:'|| v_sal);
end;
/
salary is:15600
PL/SQL procedure successfully completed
SQL> begin
dbms_output.put_line('salary is:'|| queryEmpSalary(7934));
end;
/
salary is:15600
PL/SQL procedure successfully completed
3、建立觸發器示例1:限制非工作時間向資料庫插入資料
SQL> create or replace
trigger securityEmp
before insert on emp
declare
begin
if to_char(sysdate,'day')in('星期四','星期六','星期日')
or to_number(to_char(sysdate,'hh24'))not between 8 and 18 then
raise_application_error(-20001,'不能在非工作時間插入資料。');
end if;
end;
/
Trigger created
4、建立觸發器示例2:確認資料(檢查emp表中sal 的修改值不低於原值)
SQL> create or replace trigger checkSal
before update of sal on emp
for each row
declare
begin
if :new.sal<:old.sal then
raise_application_error(-20001,'更新後的薪水比更新前小');
end if;
end;
/
Trigger created
相關文章
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- 【MySQL】MySQL(三)儲存過程和函式、觸發器、事務MySql儲存過程函式觸發器
- Oracle儲存過程Oracle儲存過程
- 《MySQL 基礎篇》九:儲存過程、流程控制和觸發器MySql儲存過程觸發器
- SQL Server實戰五:儲存過程與觸發器SQLServer儲存過程觸發器
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- 瞭解使用mysql 的檢視、儲存過程、觸發器、函式....MySql儲存過程觸發器函式
- oracle儲存過程書寫格式Oracle儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- LightDB/PostgreSQL 相容Oracle儲存過程SQLOracle儲存過程
- 2020重新出發,MySql基礎,MySql檢視&索引&儲存過程&觸發器MySql索引儲存過程觸發器
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- MySQL 高階 | 用儲存過程、定時器、觸發器來解決資料分析問題MySql儲存過程定時器觸發器
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- 為什麼你的MySQL效能差?函式、儲存過程和觸發器都確認無誤嗎?MySql函式儲存過程觸發器
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- 使用JavaScript和Python實現Oracle資料庫的儲存過程?JavaScriptPythonOracle資料庫儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- SQLSERVER儲存過程SQLServer儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- MySQL儲存過程的建立和使用MySql儲存過程
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- oracle儲存過程許可權繼承小結Oracle儲存過程繼承