레이블이 NonPredefined인 게시물을 표시합니다. 모든 게시물 표시
레이블이 NonPredefined인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 25일 토요일

PLSQL예외처리, Non-Predefined,사용자 정의 오류, RAISE, RAISE_APPLICATION_ERROR, SQL학원,SQL교육,자바학원,자바교육, 오라클교육,오라클학원,ORACLE동영상

 

PLSQL예외처리, Non-Predefined,사용자 정의 오류, RAISE, RAISE_APPLICATION_ERROR, SQL학원,SQL교육,자바학원,자바교육, 오라클교육,오라클학원,ORACLE동영상


http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=714 


PLSQL예외처리, Non-Predefined,사용자 정의 오류, RAISE, RAISE_APPLICATION_ERROR, SQL학원,SQL교육,자바학원,자

PLSQL예외처리, Non-Predefined,사용자 정의 오류, RAISE, RAISE_APPLICATION_ERROR, SQL학원,SQL교육,자바학원,자바교육, 오라클교육,오라클학원오라클 PL/SQLNon-Predefined Exception사용자 정의 오류(RAISE, RAISE_APPLICATIO

ojc.asia

https://www.youtube.com/watch?v=MBIL_eeK8pQ&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=21 

https://www.youtube.com/watch?v=Cmx2id1YGvA&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=20 

https://www.youtube.com/watch?v=rIf50lhW1IY&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=19 

https://www.youtube.com/watch?v=8hc030THr8w&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=16 


https://www.youtube.com/watch?v=-2CzUYAmRvk&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=5 


오라클 PL/SQL



Non-Predefined Exception

사용자 정의 오류

(RAISE, RAISE_APPLICATION_ERROR)




Non-Predefined Exception


  • 오라클 서버 오류중 서버에 미리 정의되지 않은 예외
  • Declare절에서 예외명을 정의하고 EXCEPTION_INIT 함수를 이용하여 예외와 오라클 서버 오류코드를 매핑하면 된다.


SET SERVEROUTPUT ON


create or replace procedure deldept

    (p_deptno in dept.deptno%type)

    as

       child_error exception;

       pragma exception_init(child_error, -2292);

    begin

       delete from dept

       where deptno=p_deptno;

  

      commit;

   exception

      when child_error then

         dbms_output.put_line('자식 레코드가 있으므로 삭제할 수 없습니다.');

   end;

   /

프로시저가 생성되었습니다.


exec deldept(10)

자식 레코드가 있으므로 삭제할 수 없습니다.



사용자 정의 오류(User Defined Exception)


RAISE 구문을 이용하는 방법


  • 오라클 서버 오류가 아니라 사용자가 정의한 논리적인 오류.
  • Declare절에서 예외명을 정의하고 예외를 발생시키고 싶은 곳에서 RAISE 구문을 이용하면 된다. 그리고 EXCEPTION절에서는 해당 예외명으로 받아서 처리하면 된다.


SET SERVEROUTPUT ON


CREATE OR REPLACE PROCEDURE insertemp2(v_empno IN emp.empno%TYPE ,

                                          v_ename  IN emp.ename%TYPE,

                                           v_sal   IN emp.sal%TYPE)

    IS

    highsal_err EXCEPTION ;

    BEGIN

      IF v_sal < 5000 THEN

         INSERT INTO emp (empno, ename, sal)

         VALUES(v_empno, v_ename, v_sal) ;

        DBMS_OUTPUT.PUT_LINE ('정상입력 OK...') ;

     ELSE

       RAISE highsal_err ;

     END IF ;

   EXCEPTION 

WHEN highsal_err THEN

       DBMS_OUTPUT.PUT_LINE ('급여를 5000 미만으로 입력하세요!') ;

   END;

   /

프로시저가 생성되었습니다.


exec insertemp2(2222,'오자커',2222)

정상입력 OK...


exec insertemp2(5555,'오자커',5555)

급여를 5000 미만으로 입력하세요!



RAISE_APPLICATION_ERROR 구문을 이용하는 방법


  • 사용자가 임의의 조건으로 SQLCODE와 SQLERRM을 정의할 수 있다.
  • SQLCODE는 -20999번에서 -20000번 사이 정수로 정의하며 EXCEPTION절을 사용하지 않아도 된다. 


SET SERVEROUTPUT ON


CREATE OR REPLACE PROCEDURE insertemp3(v_empno  IN emp.empno%TYPE ,

                                          v_ename   IN emp.ename%TYPE,

                                           v_sal    IN emp.sal%TYPE)

    IS

    BEGIN

      IF v_sal < 5000 THEN

         INSERT INTO emp (empno, ename, sal)

         VALUES(v_empno, v_ename, v_sal) ;

         DBMS_OUTPUT.PUT_LINE ('정상입력OK...') ;

     ELSE

      RAISE_APPLICATION_ERROR(-20000,'급여를 5000 미만으로 입력하세요!');

     END IF ;

   END;

   /

프로시저가 생성되었습니다.


exec insertemp3(5555,'오자커',5555)

BEGIN insertemp3(5555,'오자커',5555); END;

*

1행에 오류:

ORA-20000: 급여를 5000 미만으로 입력하세요!

ORA-06512: "SCOTT.INSERTEMP3",  11행

ORA-06512:  1행



#PLSQL예외처리, #NonPredefined, #사용자정의오류, #RAISE, #RAISE_APPLICATION_ERROR, #SQL학원,#SQL교육,#자바학원,#자바교육, #오라클교육,#오라클학원, PLSQL예외처리, NonPredefined, 사용자정의오류, RAISE, RAISE_APPLICATION_ERROR, SQL학원,SQL교육,자바학원,자바교육, 오라클교육,오라클학원

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...