[Oracle] 오라클 - PL/SQL (예외처리)
by mini_min[Oracle]
오라클 - PL/SQL (예외처리)
✔️ 예외처리
-- 실행되는 동안 발생하는 에러를 예외라고 한다.
-- 컴파일 에러 / 런타임 에러 가 있다.
-- 오라클도 예외를 정의할 수 있다. (사용자 정의 예외)
-- 미리 정의 하지 않은 예외도 있다.
-- 예외 블록 exception = when 절 안의 문장들을 수행하게 된다.
-- exception_name EXCEPTION;
-- 예외 발생
RAISE 예외 이름;
RAISE_APPLICATION_ERROR;
-- 시스템에서 제공하는 예외
DECLARE
vName VARCHAR2(30),
vSal NUMBER1
BEGIN
SELECT name, sal INTO vName, vSal FROM emp WHERE empNo = '1001';
DBMS_OUTPUT.PUT_LINE(vName || ' : ' || vSal);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('등록된 데이터가 없습니다.');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('2개 이상의 레코드가 존재합니다.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('예외가 발생했습니다.');
END;
/
💡 NO_DATA_FOUND : 데이터가 없을 때 예외처리
TOO_MANY_ROWS : 두 개이상의 레코드가 출력될 때 예외처리
OTHERS : 기타 예외처리를 처리한다.
-- 사용자 정의 예외
DECLARE
vName VARCHAR2(30);
vSal NUMBER;
EMP_SAL_CHECK EXCEPTION;
BEGIN
SELECT name, sal INTO vName, vSal FROM emp WHERE empNo = '1001';
--사용자 정의 예외 발생
IF vSal >= 3000000 THEN
RAISE_EMP_SAL_CHECK;
END IF;
DBMS_OUTPUT.PUT_LINE(vName || ' : ' || vSal);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('등록된 데이터가 없습니다.');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('2개 이상의 레코드가 존재합니다.');
WHEN EMP_SAL_CHECK THEN
DBMS_OUTPUT.PUT_LINE('급여가 300만원 이상입니당');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('예외가 발생했습니다.');
END;
/
💡RAISE 뒤에 사용자 예외처리!
선언부에서 사용자 예외를 설정한다.
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - 패키지(Package) (0) | 2022.08.17 |
---|---|
[Oracle] 오라클 - PL/SQL (트리거 Trigger) (0) | 2022.08.17 |
[Oracle] 오라클 - PL/SQL 커서(Cursor) / 동적쿼리 (0) | 2022.08.17 |
[Oracle] 오라클 - PL/SQL 프로시저 및 함수 문제 (0) | 2022.08.17 |
[Oracle] 오라클 - 함수 (FUNCTION) (0) | 2022.08.17 |
블로그의 정보
개발자 미니민의 개발로그
mini_min