Oracle——函數
阿新 • • 發佈:2017-10-17
spa creat gif 是否 全局 兩個 空值處理 number return
1.語法格式
create [or replace] fuction name [(parameter,...)] return datatype as|is (local declarations) begin statement; return return_values; end name;
2.創建名為ANNUAL_COMP的函數,通過接收兩個變量(某個員工的月工資pi_sal和獎金pi_comm)返回年薪。該函數中要求進行空值處理(即工資和獎金為null時都視為0)。
(1)創建並調用函數ANNUAL_COMP,傳遞工資和獎金列的值,這兩個值允許為空,但是該函數應該仍能返回一個非空年薪。使用下面的公式定義:年薪=(工資*12)+獎金
(2)要求顯示20號部門所有的雇員編號、姓名、工資、獎金以及年薪(年薪要求調用函數獲得)。
SQL> create or replace function annual_comp 2 (pi_sal number,pi_comm number) 3 return number 4 as 5 annual_sal number; 6 begin 7 annual_sal:=nvl(pi_sal,0)*12+nvl(pi_comm,0); 8 return annual_sal; 9 end annual_comp; 10 / 函數已創建。 SQL> select empno,ename,sal,comm,annual_comp(sal,comm) 2 from emp 3 where deptno=20; EMPNO ENAME SAL COMM ANNUAL_COMP(SAL,COMM) ---------- ---------- ---------- ---------- --------------------- 7369 SMITH 800 9600 7566 JONES 297535700 7788 SCOTT 3000 36000 7876 ADAMS 1100 13200 7902 FORD 3000 36000
註意:
?函數參數:只能用in參數
?函數可以有多個return語句,但執行一個return語句
3.使用函數的方法
?將函數的返回值賦給一個變量或全局變量
?在select語句中使用
4.刪除函數的語法
drop function function_name;
5.創建名為valid_deptno的函數,已知部門號,判斷該部門是否存在與dept部門表中。
SQL> create or replace function valid_deptno 2 (v_deptno dept.deptno%type) 3 return boolean 4 as 5 v_count number; 6 begin 7 select count(*) into v_count from dept where deptno=v_deptno; 8 if v_count=0 then 9 return false; 10 else 11 return true; 12 end if; 13 end; 14 / 函數已創建。 SQL> declare 2 flag boolean; 3 begin 4 flag:=valid_deptno(4); 5 if flag then 6 dbms_output.put_line(‘該部門存在‘); 7 else 8 dbms_output.put_line(‘該部門不存在‘); 9 end if; 10 end; 11 / 該部門存在 PL/SQL 過程已成功完成。 SQL> declare 2 flag boolean; 3 begin 4 flag:=valid_deptno(100); 5 if flag then 6 dbms_output.put_line(‘該部門存在‘); 7 else 8 dbms_output.put_line(‘該部門不存在‘); 9 end if; 10 end; 11 / 該部門不存在 PL/SQL 過程已成功完成。
Oracle——函數