지난 포스팅에서 PL / SQL 을 활용하는 방법을 간략하게 작성하였다.
이번에는 PL / SQL 을 활용한 프로시저에 대해 정리한다.
프로시저란 특정 작업을 수행하는 SQL 프로그램 블록을 뜻한다.
프로시저는 매개변수를 받을 수 있으며, 반복적으로 사용이 가능하다.
이번 예제에서도 지난번과 같이 HUMAN, CAR 테이블을 사용한다.
1. 프로시저 생성 / 삭제하기
모든 오브젝트가 그러하듯 프로시저 또한 CREATE 문으로 생성이 가능하다. 전체적으로 보면 테이블 생성과
비슷해 보인다. 하지만 프로시저에서는 컬럼이 아닌 변수를 생성한다.
CREATE OR REPLACE PROCEDURE CAR_INSERT
(
[변수1] in [type],
[변수2] in [type],
[변수3] in [type]
)
삭제하는 방법은 역시나 DROP 을 사용하여 삭제할 수 있다.
DROP PROCEDURE CAR_INSERT;
2. 프로시저 활용하기
프로시저는 PL / SQL 과 함께 사용이 가능하다.
CREATE OR REPLACE PROCEDURE CAR_INSERT
(
P_C_H_NO in CAR.C_H_NO % type,
P_C_NO in CAR.C_NO % type,
P_C_NAME in CAR.C_NAME % type
)
IS -- 프로시저 내부에서 사용할 지역변수 선언
BEGIN
INSERT INTO CAR
VALUES(P_C_H_NO, P_C_NO, P_C_NAME);
COMMIT;
END;
/
코드의 윗부분은 프로시저의 생성과 동일하다. 아랫부분 역시 지난 PL / SQL 에서 사용했던 코드와 매우 유사하다.
차이점은 BEGIN 부분에서 INSERT 를 사용한다는 점인데 VALUES 의 안에는 프로시저를 생성하며 만들었던
변수들이 들어가 있다.
이제 이 프로시저를 사용해 보자.
EXECUTE CAR_INSERT(5, '5050', '벤츠');
EXECUTE 는 프로시저를 실행한다는 명령어 이다.
위의 코드를 실행해 보면 BEGIN에서 지정한 INSERT 안의 VALUES의 변수에 해당 값들이 들어간다.
SELECT 를 통해 확인해 보면실행 결과는 다음과 같다.

실행 결과
마지막으로 INSERT 가 아닌 UPDATE문을 사용하여 '벤츠' 를 '쏘나타' 로 떡락시켜 보도록 한다.
CREATE OR REPLACE PROCEDURE CAR_UPDATE
(
P_C_NAME IN CAR.C_NAME % TYPE
)
IS
BEGIN
UPDATE CAR SET C_NAME = '쏘나타'
WHERE C_NAME = P_C_NAME;
COMMIT;
END;
/
EXECUTE CAR_UPDATE('벤츠');

실행 결과
'DB > 구자료' 카테고리의 다른 글
SQL로 별찍기 (0) | 2022.08.28 |
---|---|
저장 함수 (FUNCTION) (0) | 2022.08.28 |
PL / SQL (0) | 2022.08.28 |
INDEX (0) | 2022.08.28 |
VIEW (feat. OR REPLACE) (0) | 2022.08.28 |