---- Function (함수생성)
create or replace function f_tax
(v_sano in emp.empno%type)
return number     --- 결과물 값을 해당 문자 타입으로 return시킨다.
is
  v_yearpay number(6);
  v_result number;
begin
  select coalesce(sal*12+comm,sal*12,0) into v_yearpay
  from emp
  where empno = v_sano;
                                -- 일반적인 수식에서는 = 를쓰나 
  if v_yearpay >= 40000 then v_result := v_yearpay*0.1;      -- 해당 변수에 값을 대입할때는
  elsif v_yearpay >= 30000 then v_result := v_yearpay*0.08;  -- ':=' 를 쓴다.
  elsif v_yearpay >= 20000 then v_result := v_yearpay*0.05;
  else v_result := v_yearpay*0.03;
  end if;
 
  return v_result;
end;
/

select empno, ename, f_tax(empno) tax
from emp
where f_tax(empno) > 1000;
--///////////////////////////////////////////////////////////////////////////////////////////--
--///////////////////////////////////////////////////////////////////////////////////////////--
/* 프로시저와 함수는 만드는 방법은 비슷하나 프로시저는 함수처럼 쿼리문 안에 넣을수 없고
   결과값만 바로 출력해주는것이다. 함수는 쿼리문안에 넣어서 사용할 수 있다.           */

'Program... > Oracle' 카테고리의 다른 글

Oracle Procedure (배열)  (0) 2009.03.14
Oracle Procedure (loop, for loop)  (0) 2009.03.14
Oracle PL(Procedure Language)/SQL  (0) 2009.03.14
Oracle Sequence  (0) 2009.03.14
Oracle sqlldr 실습 및 Index  (0) 2009.03.14
Posted by Duritz

공지사항

Yesterday
Today
Total
05-18 14:19

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31