개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

- CURSOR란
Oracle Server는 SQL문을 실행하고 처리한 정보를 저장하기 위해 "Private SQL Area" 이라고 하는 작업영역을 이용합니다.

 

 

이 영역에 이름을 부여하고 저장된 정보를 처리할 수 있게 해주는데 이를 CURSOR라 합니다. CURSOR는 DML문과 SELECT문에 의해 내부적으로 선언되는 Implicit(묵시적인) CURSOR와 사용자가 선언하고 이름을 정의해서 사용되는 Explicit(명시적인) CURSOR가 있습니다. PL/SQL에서 SELECT문은 한 개의 Row만을 검색할 수 있기 때문에 하나 이상의 Row를 검색하기 위해서는 Explicit CURSOR를 사용하여야 합니다.

 

 

 CURSOR란
Implicit CURSOR의 경우는 PL/SQL Block의 BEGIN Section에 SQL문이 있으면 PL/SQL은 SQL 이라는 이름으로 Implicit CURSOR를 만들게 되는데 PL/SQL은 이 CURSOR를 자동으로 관리하며 가장 최근의 Implicit CURSOR의 결과를 알려주기 위하여 몇 가지 Attribute를 제공합니다.
PL/SQL문에서 이 Attribute를 Function처럼 사용할 수 있지만, SQL문에서는 사용할 수 없습니다. 이 Attribute는 DML문의 수행결과를 알아보는데 유용합니다  

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

- SQLCODE, SQLERRM

일반적인 Error처리를 위하여 Oracle에서 제공하는 함수인 SQLCODE, SQLERRM을 활용할 수 있습니다.

 

 

 

[예제10] User Defined EXCEPTION의 예제9에서 작성한 Procedure를 이용하여 데이터를 입력하되 단, 커미션을 30%로 지정하여 실행하시오.

 

 

 

[예제11] 예제 9에서 실행시에 해당 COMMISSION_PCT를 입력하지 않는 경우에도 프로그램이 정상적으로 수행되도록 User Defined EXCEPTION의 예제9에서 작성한 프로그램을 보완하면 다음과 같습니다.

 

앞의 예제7, 예제9번과 같이 PL/SQL에서의 SELECT~ INTO~문은 정확히 한 행의 데이터만 검색이 가능하고 여러 행의 데이터가 넘어오는 경우나 한 행의 데이터도 검색되지 않는 경우에는 에러가 발생합니다. 따라서 사용자가 검색하고자 하는 데이터가 여러 행인 경우에는 Explicit CURSOR를 사용하여야 하는데 다음 절에서 CURSOR의 활용을 알아보기로 합니다.

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

3. User Defined EXCEPTION

사용자 정의 EXCEPTION은 oracle server error는 아니고, 사용자가 정한 조건이 만족되지 않을 때, Error를 발생시키는 방법입니다. DECLARE Section에서 EXCEPTION명을 정의하고 BEGIN Section에서 RAISE문을 써서 에러를 발생시킵니다. 그리고 EXCEPTION Section에서 에러 처리문을 기술합니다.

 

 

 

 

 

 

[예제9] S_EMP 테이블에 새로운 사원을 입력하는 프로그램을 작성하면 다음과 같습니다.단, 사번은 일련번호로 부여할 수 있도록 값을 지정하고 이름, 직책, 급여, 커미션은 사용자가 입력합니다.

단, 급여를 600이하로 입력시에는 입력이 불가능하도록 처리합니다.

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

2. Non-Predefined EXCEPTION

Oracle Server Error중 미리 정의되지 않은 Error는 사용자가 DECLARE Section에서 EXCEPTION명을 정의하고 Oracle Server에서 제공하는 Error번호를 사용하여 Error와 연결한 후 EXCEPTION Section에서 Error처리 Routine을 기술합니다.

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

1. Predefined EXCEPTION

DECLARE Section에서 선언할 필요가 없습니다.  Oracle Server 에러 중에서 자주 발생되는 20가지 에러에 대해 미리 정의되어 있는 EXCEPTION입니다.
해당 EXCEPTION 처리 루틴에서 미리 정의된 EXCEPTION명을 참조하여 에러를 처리합니다. Predefined EXCEPTION의 종류에는 다음과 같은 것들이 있습니다.

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

WHEN OTHERS 구문은 EXCEPTION 처리의 마지막 구문으로서 미리 선언되지 못한 모든 경우의 EXCEPTION처리를 가능하게 합니다.
EXCEPTION Keyword에 의해 Error처리가 시작됩니다.
EXCEPTION 처리구문이 필요하지 않으면 생략할 수 있습니다.

+ Recent posts