PL/SQL
(Oracle Procedual Language extension to SQL)
DECLARE
[실행에 필요한 여러 요소 선언]; -변수,상수,커서
BEGIN
[작업을 위해 실제 실행하는 명령어];
EXCEPTION
[PL/SQL 수행 도중 발생하는 오류 처리];
END;
DECLARE
LOB : Large Object - CLOB, BLOB
참조형
-%TYPE : 특정 테이블의 컬럼의 자료형을 참조
-%ROWTYPE : 특정 테이블의 모든 컬럼들을 참조
복합형
-RECORD : 여러 변수와 자료형을 한꺼번에 선언하는 방식 / 레코드
-TABLE : 키 - 값 / 컬렉션
V_NUM CONSTANT NUMBER := 1000;
//BEGIN
//V_NUM := 2000;
-> 변경 불가
IF 조건식 THEN
조건식이 참일때 실행
END IF;
2) IF-THEN-ELSE
ELSE 구문
3) IF-THEN-ELSIF
여러 조건에 따른 조건식
DECLARE
V_SCORE NUMBER := 83;
BEGIN
IF V_SCORE >= 90 THEN
DBMS_OUTPUT.PUT_LINE('A학점');
ELSIF V_SCORE >= 80 THEN
DBMS_OUTPUT.PUT_LINE('B학점');
ELSIF V_SCORE >= 70 THEN
DBMS_OUTPUT.PUT_LINE('C학점');
ELSIF V_SCORE >= 60 THEN
DBMS_OUTPUT.PUT_LINE('D학점');
ELSE
DBMS_OUTPUT.PUT_LINE('F학점');
END IF;
END;
CASE
WHEN 조건,값 THEN...
DECLARE
V_RANK NUMBER := 3;
BEGIN
CASE V_RANK
WHEN 1 THEN DBMS_OUTPUT.PUT_LINE('금메달');
WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('은메달');
WHEN 3 THEN DBMS_OUTPUT.PUT_LINE('동메달');
ELSE DBMS_OUTPUT.PUT_LINE('NO메달');
END CASE;
END;
DECLARE
V_SCORE NUMBER := 75;
BEGIN
CASE
WHEN V_SCORE >= 90 THEN DBMS_OUTPUT.PUT_LINE('A학점');
WHEN V_SCORE >= 80 THEN DBMS_OUTPUT.PUT_LINE('B학점');
WHEN V_SCORE >= 70 THEN DBMS_OUTPUT.PUT_LINE('C학점');
WHEN V_SCORE >= 60 THEN DBMS_OUTPUT.PUT_LINE('D학점');
ELSE DBMS_OUTPUT.PUT_LINE('F학점');
END CASE;
END;
LOOP
END LOOP;
EX)
DECLARE
V_NUM NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('V_NUM : ' || V_NUM);
V_NUM := V_NUM + 1;
-- IF V_NUM > 4 THEN EXIT;
-- END IF;
EXIT WHEN V_NUM > 4;
END LOOP;
END;
WHILE 조건식 LOOP
조건이 참일때 반복되는 구간
END WHILE;
EX)
DECLARE
V_NUM NUMBER := 1;
BEGIN
WHILE V_NUM <= 4 LOOP
DBMS_OUTPUT.PUT_LINE('V_NUM : ' || V_NUM);
V_NUM := V_NUM + 1;
END LOOP;
END;
FOR i IN 0..4 LOOP // i -> 0 ~ 4
END FOR;
EX)
BEGIN
FOR i IN 1..4 LOOP
DBMS_OUTPUT.PUT_LINE('i : ' || i);
END LOOP;
END;
REVERSE 키워드
FOR i IN REVERSE 0..4 LOOP // i -> 0 ~ 4
END FOR;
DECLARE
V_TOTAL NUMBER := 0;
BEGIN
FOR I IN 1..100 LOOP
CONTINUE WHEN MOD(i, 2) = 0;
V_TOTAL := V_TOTAL + i;
END LOOP;
DBMS_OUTPUT.PUT_LINE('합계 : ' || V_TOTAL);
END;