PROCEDURE
● 프로시저(PROCEDURE) 생성
CREATE OR REPLACE PROCEDURE 프로시저의 이름
(
매개변수1 IN 데이터타입:=타입
매개변수2 IN 데이터타입%TYPE
)
IS 함수내에서 사용할 변수, 상수 등 선언
BEGIN 실행할 문장
END;
※ BEGIN-END 단독 사용
- 전체 드래그 후 Ctrl + Enter 하여 실행
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO');
END;
● 프로시저(PROCEDURE) 사용
CALL 프로시저 이름(값1, 값2)
※ Output ON
- Output 사용 전 ON으로 설정하기

※ Output 확인
- 아래 사진에 표시된 버튼을 클릭하여 확인한다.

PL/SQL문(IF문)
● 종류
1. IF 조건 THEN 실행문;
END IF;
2. IF 조건 THEN 실행문;
ELSIF 조건 THEN 실행문;
...
ELSE 실행문;
END IF;
3. IF 조건 THEN 실행문;
ELSE 실행문;
END IF;
실습
1. PROCEDURE
1) 함수 만들기
- PROCEDURE에서 BEGIN-END 사용
CREATE OR REPLACE PROCEDURE F
(
X IN NUMBER
)
IS
BEGIN
DBMS_OUTPUT.ENABLE;
DBMS_OUTPUT.PUT_LINE(2*X+1);
END;
- PROCEDURE 사용
CALL F(2);
2) JOBS 테이블에 INSERT 해주는 함수 만들기
- PROCEDURE에서 BEGIN-END 사용
CREATE OR REPLACE PROCEDURE MY_NEW_JOB_PROC
(
P_JOB_ID IN JOBS.JOB_ID%TYPE,
P_JOB_TITLE IN JOBS.JOB_TITLE%TYPE,
P_MIN_SALARY IN JOBS.MIN_SALARY%TYPE,
P_MAX_SALARY IN JOBS.MAX_SALARY%TYPE
)
IS
BEGIN
INSERT INTO JOBS(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)
VALUES(P_JOB_ID, P_JOB_TITLE, P_MIN_SALARY, P_MAX_SALARY);
DBMS_OUTPUT.ENABLE;
DBMS_OUTPUT.PUT_LINE('ALL DONE ABOUT'||' '||P_JOB_ID);
END;
- PROCEDURE 사용
CALL MY_NEW_JOB_PROC('IT', 'Developer', 14000, 20000);
2. PL/SQL문
1) 점수에 맞는 학점 출력하기
※ CHR(10) : 줄바꿈(아스키코드)
DECLARE
SCORE NUMBER := 80;
GRADE VARCHAR2(5);
BEGIN
IF SCORE >= 90 THEN GRADE := 'A';
ELSIF SCORE >= 80 THEN GRADE := 'B';
ELSIF SCORE >= 70 THEN GRADE := 'C';
ELSIF SCORE >= 60 THEN GRADE := 'D';
ELSE GRADE := 'F';
END IF;
DBMS_OUTPUT.ENABLE;
DBMS_OUTPUT.PUT_LINE('당신의 점수 : '||SCORE||'점'||CHR(10)||'학점 : '||GRADE);
END;