* PL/SQL 의 IF 문
-> IF( ) ~ THEN ~
ELSIF ( ) ~ THEN ~
ELSE ~
END IF
DECLARE
INFO_A TABLE_A%ROWTYPE;
BEGIN
SELECT *
INTO INFO_A
FROM TABLE_A
WHERE A_ID = '&A_ID' ;
IF (INFO_A.A_NAME = 'MYNAME')
THEN DBMS_OUTPUT.PUT_LINE('MY INFO');
--ELSIF ~ THEN ~ ELSE ~
END IF;
END;
/
* PL/SQL 의 CASE 문
-> ~ := CASE ~
WHEN ~ THEN~
WHEN ~ THEN~
WHEN ~ THEN~
WHEN ~ THEN~
WHEN ~ THEN~
END:
DECLARE
INFO_A TABLE_A%ROWTYPE;
ID VARCHAR2(20);
BEGIN
SELECT *
INTO INFO_A
FROM TABLE_A
WHERE A_ID = '&AID';
ID :=
CASE TABLE_A.A_ID
WHEN 'AA' THEN 'FRIEND1'
WHEN 'BB' THEN 'FRUEND2'
WHEN 'CC' THEN 'FRUEND3'
WHEN 'DD' THEN 'FRUEND4'
WHEN 'EE' THEN 'FRUEND5'
END;
DBMS_OUTPUT.PUT_LINE(TABLE_A.A_ID || '는 ' || ID);
END;
/
*PL/SQL 의 반복문
-> (BASIC LOOP) : 내부에 처리문을 작성하고 마지막에 LOOP를 벗어날 조건을 명시
LOOP
처리문
조건문
( IF 조건식 THEN EXIT
END IF )
or
( EXIT WHEN 조건식 )
END LOOP;
DECLARE
N NUMBER :=1;
BEGIN
LOOP
DBMS_OUTPUT_PUT_LINE(N);
EXIT WHEN N=5;
N := N+1;
END LOOP;
END;
/
* PL/SQL 의 반복문2
-> (FOR 문) :
FOR 인덱스 IN (REVERSE) 초기값 ... 최종값
LOOP
처리문
END LOOP;
BEGIN
FOR I IN 1..5
LOOP
DBMS_OUTPUT.PUT_LINE(I);
END LOOP;
END;
/
--거꾸로
BEGIN
FOR I IN REVERSE 1..5
LOOP
DBMS_OUTPUT.PUT_LINE(I);
END LOOP;
END;
/
*반복문을 이용한 INSERT
CREATE TABLE MAKE1(
R_NUM NUMBER(3),
R_CHAR VARCHAR2(20),
DT DATE
);
BEGIN
FOR I IN 1..10
LOOP
INSERT INTO MAKE1 VALUES(I, '임의의수'||I , SYSDATE+I );
END LOOP;
END;
/
*예외처리 : 오라클 내부에 미리 정의되어 있는 예외 (약 20개)
따로 선언할 필요 없이 발생 시 예외절에 자동 트랩됨
- 대표적인 시스템 예외
-- NO_DATA_FOUND : SELECT문이 아무런 데이터 행을 반환하지 못할 때
-- TOO_MANY_ROWS : 하나만 리턴해야하는 SELECT문이 하나 이상의 행을 반환할 때
-- INVALID_CURSOR : 잘못된 커서 연산
-- ZERO_DIVIDE : 0으로 나눌 때
-- DUP_VAL_ON_INDEX : UNIQUE 제약을 갖는 컬럼에 중복되는 데이터가 INSERT될 때
<예외처리 구문>
EXCEPTION WHEN 예외명 1 THEN 예외처리구문1
WHEN 에외명 2 THEN 예외처리구문 2
.....
<EXAMPLE>
DECLARE
NUM NUMBER := 0;
BEGIN
NIM := 10/0;
DBMS_OUTPUT.PUT_LINE('SUCCESS');
EXCEPTION
WHEN ZERO_DIVIDE
THEN DBMS_OUTPUT.PUT_LINE('ZERO_DIVIDE EXCEPTION발생!');
END;
/
'개발자로 업그레이드 되자 > 오라클,SQL' 카테고리의 다른 글
오라클 DBMS 정리 14(TRIGGER) (0) | 2021.09.30 |
---|---|
오라클 DBMS 정리 13(PROCEDURE/ FUNCTION/CURSOR) (0) | 2021.09.30 |
오라클 DBMS 정리 11(PL/SQL) (0) | 2021.09.29 |
오라클 DBMS 정리 10(OBJECT) (0) | 2021.09.29 |
오라클 DBMS 정리 9(DCL) (0) | 2021.09.29 |