본문 바로가기

DBMS

[DBMS] 19

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;
 

 

'DBMS' 카테고리의 다른 글

[DBMS] 21  (0) 2021.11.19
[DBMS] 20  (0) 2021.11.16
[DBMS] 18  (0) 2021.11.13
[DBMS] 17  (0) 2021.11.11
[DBMS] 16  (0) 2021.11.09