CREATE PROCEDURE 프로시저_명 (파라미터_명 MODE 데이터 타입) IS 변수 선언 CREATE OR REPLACE PROCEDURE 프로시저_명(파라미터_명 MODE 데이터_타입) AS 변수 선언
프로시저 호출문
EXCUTE 프로시저_명(파라미터_명1, 파라미터_명2)
CREATE OR REPLACE PROCEDUTE TEST_PROCEDURE ( V_DATE IN CHAR(8) --파라미터 ) IS V_TOT_CNT NUMBER :=0 -- 내부에서 사용할 변수 BEGIN -- 프로시저 시작 -- 제어부 IF V_DATE < "20210215" THEN SET V_DATE = "20210201"; END IF; --SQL SELCT SUM(C_CNT) INTO V_TOT_CNT FROM TEST_TABLE WHERE C_DATE = V_DATE; -- SELCT 문에서 나온 결과는 INTO 문에 선언된 변수에 값이 전달 - (SELECT 에서 조회된 결과가 없을 경우에는 NO_DATA_FOUND라는 결과가 발생 -예외부 EXCEPTION WHEN NO_DATA_FOUND THEN SET V_TOT_CNT= 0; -- INSERT INTO TEST_TABLE(C_DATE, C_CNT) VALUES(V_DATE, V_TOT_CNT); COMMIT; //트랜잭션 완료 END; //프로시저 종료
실행 방법
- IN 변수만 있는 프로시저 EXECUTE TEST_PROCEDURE('20210205'); CALL TEST_PROCEDURE('20210205'); EXECUTE TEST_PROCEDURE('20210205');
CREATE OR REPLACE PROCEDURE TEST_PROC ( -- 프로시저 실행 시 받을 매개변수는 CREATE 안에 작성 param1 IN NUMBER , param2 IN VARCHAR2 ) -- 프로시저에서 선언할 변수는 IS 뒤에 작성 IS param3 IN VARCHAR2(20) := "StudyingAzae"; -- 실행 내용은 BEGIN 뒤에 작성 BEGIN -- 단순 INSERT 문 INSERT INTO TEST_TABLE (NO, NAME, SITE) VALUE (param1, param2, param3) ; END TEST_PROC;
- 실행
- IN 변수만 있는 프로시저
EXEC TEST_PROC();
EXEC TEST_PROC(213, "DDDL");- OUT 변수만 있는 프로시저
DECLARE
param1 varchar2(200);
param2 varchar2(200);
BEGIN
TEST_PROC('123', param1, param2);
END;
- 프로시저 문법 종류
- IF 조건1 THEN 처리
IF 조건2 THEN 처리
ELSE
END IF;