개발 수업/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(7369) FROM dual;
|
cs |
함수와 프로시저 비교
함수 : 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드
프로시저 : 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합, 일련의 작업을 정리한 절차.
-> 함수는 여러 작업을 위한 기능, 프로시저는 작업을 정리한 절차
함수 | 프로시저 | |
매개변수 | 입력 형식으로만 받을 수 있음. | 입력, 출력, 입출력 형식으로 받을 수 있음. |
반환값 | 반드시 가져야 함. | 가질 수도 있고 가지지 않을 수도 있음. |
쿼리문 내에서 실행가능 | select,where문 등에서 사용 가능 | select,where문 등에서 사용 불가 |
처리 장소 | 클라이언트(화면)에서 값을 건네 받고 서버에서 필요한 값을 가져와서 클라이언트에서 작업을 하고 반환 |
클라이언트(화면)에서 값을 건네받아 서버에서 작업 한 뒤 클라이언트에게 전달됨. |
728x90