▶ PROCEDUER(프로시져)
- PL/SQL구문을 "저장"해서 이용하는 객체
- 필요할때마다 내가 작성한 PL/SQL문을 편하게 호출이 가능하다.
[표현법]
CREATE [OR REPLACE] FROCEDURE 프로시져명[(매개변수)]
IS
BEGIN
실행부분
END;
[프로시져 실행방법]
EXEC 프로시져명;
/
ex)
-- 프로시져 생성하기
CREATE OR REPLACE PROCEDURE DEL_DATA
IS
BEGIN
DELETE FROM PRO_TEST;
COMMIT;
END;
/
-- 프로시져 실행
EXEC DEL_DATA;
■ 매개변수 있는 프로시져 만들기
- IN : 프로시져 실행시 필요한 값을 담는 변수(일반적인 매개변수와 동일한 개념)
- OUT : 호출한 곳으로 되돌려주는 변수(결과값)
CREATE OR REPLACE PROCEDURE PRO_SELECT_EMP(
V_EMP_ID IN EMPLOYEE.EMP_ID%TYPE,
V_EMP_NAME OUT EMPLOYEE.EMP_NAME%TYPE,
V_SALARY OUT EMPLOYEE.SALARY%TYPE,
V_BONUS OUT EMPLOYEE.BONUS%TYPE
)
IS
BEGIN
SELECT EMP_NAME, SALARY, BONUS
INTO V_EMP_NAME, V_SALARY, V_BONUS
FROM EMPLOYEE
WHERE EMP_ID = V_EMP_ID;
END;
/
-- 매개변수가 있는 프로시져 실행하기
VAR EMP_NAME VARCHAR2(20);
VAR SALARY NUMBER;
VAR BONUS NUMBER;
EXEC PRO_SELECT_EMP(200, :EMP_NAME, :SALARY, :BONUS);
PRINT EMP_NAME;
PRINT SALARY;
PRINT BONUS;
■ 프로시져의 장점
- 처리속도가 빠르다.
- 대용량 자료처리시 유리하다.(데이터를 넘길때마다 자원이 소비되기 때문에 DB에서 처리하는게 성능이 좋다.)
■ 프로시져의 단점
- DB자원을 직접 사용하기 때문에 DB에 부하를 주게될수 있다.
- 관리적 측면에서 자바 소스코드, 오라클 소스코드 두개를 동시에 관리하기 어렵다.
※ 즉, 한번에 처리되는 데이터량이 많고 성능을 요규하는 처리는 대체로 자바보다 DB상에서 처리하는 것이 성능측면에서 나을 것이고 소스관리(유지보수)측면에서는 자바에서 작업하는게 더 좋다.
▶ FUNCTION
- 프로시져오 거의 유사하지만 실행 결과를 반환 받을 수 있다.
[표현법]
CREATE [OR REPLACE] FUNCTION 평션명[(매개변수)]
RETURN 자료형
IS
BEGIN
실행부분
END;
/
ex)
-- EMP_ID를 전달받아서 연봉(보너스 포함)을 계산에서 출력해주는 함수 만들기
-- CALC_SALARY
CREATE OR REPLACE FUNCTION CALC_SALARY(V_EMP_ID EMPLOYEE.EMP_ID%TYPE)
RETURN NUMBER
IS
E EMPLOYEE%ROWTYPE;
RESULT NUMBER;
BEGIN
SELECT *
INTO E
FROM EMPLOYEE
WHERE EMP_ID = V_EMP_ID;
RESULT := (E.SALARY + (E.SALARY * NVL(BONUS, 0))) * 12;
RETURN RESULT;
END;
/
SELECT EMP_ID, CALC_SALARY(EMP_ID)
FROM EMPLOYEE;
'DB' 카테고리의 다른 글
DB (16) OBJECT(TRIGGER) (0) | 2023.06.15 |
---|---|
DB (14) PL/SQL (0) | 2023.06.14 |
DB (13) OBJECT(INDEX) (0) | 2023.06.13 |
DB (12) OBJECT(SEQUENCE) (2) | 2023.06.13 |
DB (11) OBJECT (0) | 2023.06.13 |