개발 수업/DB

[PL/SQL] 사용자함수(FUNCTION) / 함수와 프로시저 비교

오늘 하루s 2023. 6. 15. 19:04
728x90
더보기

Day33. 230615

사용자함수(FUNCTION)

- 보통 값을 계산하고 결과 값을 반환하기 위해서 함수를 많이 사용

- 대부분 구성이 프로시저와 유사 하지만 IN 파라미터만 사용가능

- 반드시 반환될 값의 데이터 타입을 RETURN문에 선언하고

PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 함.

 

함수 생성

CREATE [OR REPLACE] FUNCTION 함수명(매개변수리스트)
RETURN 데이터타입;
IS[AS]
  [변수 선언 부분]
BEGIN
  실행부

RETURN 반환값;
[EXCEPTION
   예외처리부]
END;

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE OR REPLACE FUNCTION update_sal_fc(
    p_empno IN emp.empno%TYPE,
    p_n IN number:=0
)
  RETURN number
IS
 pragma autonomous_transaction;
 after_sal emp.sal%TYPE;
BEGIN
 update emp
 set sal=sal+p_n
 where empno=p_empno;
 commit;
 
 select sal
 INTO after_sal
 from emp
 where empno=p_empno;
 RETURN after_sal; 
END;     
/
cs

 

 

함수 호출

->select문을 사용해 호출

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
select empno,sal FROM emp where empno=7369;
 
 
select empno,ename,sal, update_sal_fc(7839)
from  emp;
 
 
select empno,ename,sal"인상전급여",update_sal_fc(7369,123)"인상후급여"
from emp
where empno=7369;
 
 
SELECT empno, ename, sal "인상전급여",
              update_sal_fc(7369"인상후급여",
              update_sal_fc(7369,100"인상후급여2"
FROM emp 
where empno=7369;
 
 
select update_sal_fc(7369FROM dual;
cs

 

 

 

함수와 프로시저 비교

함수 : 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드

프로시저 : 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합, 일련의 작업을 정리한 절차.

-> 함수는 여러 작업을 위한 기능, 프로시저는 작업을 정리한 절차

 

  함수 프로시저
매개변수 입력 형식으로만 받을 수 있음. 입력, 출력, 입출력 형식으로 받을 수 있음.
반환값 반드시 가져야 함. 가질 수도 있고 가지지 않을 수도 있음.
쿼리문 내에서 실행가능 select,where문 등에서 사용 가능 select,where문 등에서 사용 불가
처리 장소 클라이언트(화면)에서 값을 건네 받고
서버에서 필요한 값을 가져와서
클라이언트에서 작업을 하고 반환
클라이언트(화면)에서 값을 건네받아
서버에서 작업 한 뒤
클라이언트에게 전달됨.

 

728x90