Oracle :: DB Function vs Procedure vs Package
1. Function (함수)
- 값을 계산한 후 결과값을 반환하기 위해 주로 사용
- 프로시져와의 차이점
ㄱ) IN 파라미터만 사용 가능
ㄴ) 반환될 데이터 타입을 반드시 RETURN문에 선언해야 함 (값 없이는 RETURN문을 포함할 수 없음)
ㄷ) PL / SQL 블록 내에서 RETURN문을 통해 반드시 값을 반환해야 함
- 코딩을 클라이언트 상에서 함
(화면단~클라이언트~에서 함수에게 값을 호출하면, 함수는 서버에서 필요한 값들을 가지고 와
함수 내에서 작업하여 얻어낸 값을 호출했던 클라이언트에게 넘겨줌
2. Procedure (프로시져)
- 지정된 특정 처리를 시행하는 서브 프로그램의 한 유형
- 단독으로 실행되거나, 다른 프로시져나 다른 틀 또는 다른 환경 등에서 호출되어 실행됨
- 처음 생성 후 컴파일 할 때 오브젝트로서 데이터베이스 내에에 저장되며
이후로 반복적으로 호출되어 실행 될 때 별도의 컴파일 없이 생성된 코드로 바로 실행
- 명칭이 있는 PL / SQL 블록
- 매개 변수를 받을 수 있고, 반복적으로도 사용 가능
- 보통은 연속 실행, 구현이 복잡한 트랜잭션을 수행하는 PL / SQL 블록을 DB에 저장하기 위해 생성
- 코딩을 서버(DB)상에서 함
(화면단~클라이언트~에서 프로시져에게 값을 호출하면, 프로시져는 받은 값을 가지고
서버에서 작업하여 얻어낸 값을 호출했던 클라이언트에게 넘겨줌)
- 값 없이 RETURN문을 포함할 수 있음
- 함수보다 속도가 빠름
3. Package (패키지)
- Oracle DB에 저장되어 있는, 서로 관련 있는 PL / SQL 프로시져, 함수의 집합
- 선언부 / 본문. 두 부분으로 나눠짐
* Package > Procedure > Function