본문 바로가기

IT/오라클

Oracle PL/SQL 강좌 8. Package(패키지) 패키지(package)는 오라클 데이터베이스에 저장되어 있는 서로 관련있는 PL/SQL 프로지져와 함수들의 집합 이다. 패키지는 선언부와 본문 두 부분으로 나누어 진다.패키지 선언절 문법- 선언절은 패키지에 포함될 PL/SQL 프로시저나, 함수, 커서, 변수, 예외절을 선언 한다.- 패키지 선언부에서 선언한 모든 요소들은 패키지 전체에 적용 된다.- 즉 선언부에서 선언한 변수는 PUBLIC 변수로 사용 된다.패키지 본문 문법- 패키지 본문은 패키지에서 선언된 부분의 실행을 정의 한다.- 즉 실재 프로시져나 함수의 내용에 해당하는 부분이 온다.아래는 네 개의 프로시저를 하나의 패키지로 생성하는 아주 간단한 예제이다.프로시저명프로시저 기능all_emp_info모든 사원의 사원 정보 (사번, 성명, 입사일)a.. 더보기
Oracle PL/SQL 강좌 7.5. SQLCODE, SQLERRM SQLCODE, SQLERRM 구문을 사용해서 WHEN OTHERS문으로 트랩(Trap)되는 오류들의 실제 오류 코드와 설명을 볼 수 있다. SQLCODE : 실행된 프로그램이 성공적으로 종료하였을때는 오류번호 0을 포함하며, 그렇지 못할 경우에는 해당 오류코드 번호를 포함한다. SQLERRM : SQLCODE에 포함된 오라클 오류 번호에 해당하는 메시지를 가진다.SQLCODE Value설 명0오류 없이 성공적으로 종료1사용자 정의 예외 번호+100NO_DATA_FOUND 예외 번호음수위에 것을 제외한 오라클 서버 에러 번호SQLCODE, SQLERRM 예제 SQL> CREATE OR REPLACE PROCEDURE Errcode_Exception (v_deptno IN emp.deptno%type ) .. 더보기
Oracle PL/SQL 강좌 7.4. 사용자 정의 예외(User-Defined Exceptions) 오라클 저장함수 RAISE_APPLICATION_ERROR를 사용하여 오류코드 -20000부터 -20999의 범위 내에서 사용자 정의 예외를 만들수 있다. - STEP 1 : 예외의 이름을 선언 (선언절) - STEP 2 : RAISE문을 사용하여 직접적으로 예외를 발생시킨다(실행절) - STEP 3 : 예외가 발생할 경우 해당 예외를 참조한다(예외절)사용자 정의 예외 예제 -- 입력한 부서의 사원이 5명보다 적으면 사용자 정의 예외가 발생하는 예제 SQL> CREATE OR REPLACE PROCEDURE User_Exception (v_deptno IN emp.deptno%type ) IS -- 예외의 이름을 선언 user_define_error EXCEPTION; -- STEP 1 cnt NUMBE.. 더보기
Oracle PL/SQL 강좌 7.3. 미리 정의되지 않은 예외(Non-Predefined Exception) 미리 정의되지 않은 예외란? 미리정의되지 않은 예외는 사용자가 선언절에서 예외명을 정의하고, Oracle Server에서 제공하는 Error 번호를 사용하여, 정의된 예외와 연결한 후 EXCEPTION절에서 정의된 예외를 사용한다. - STEP 1 : 예외의 이름을 선언 (선언절) - STEP 2 : PRAGMA EXCEPTION_INIT문장으로 예외의 이름과 오라클 서버 오류 번호를 결합 (선언절) - STEP 3 : 예외가 발생할 경우 해당 예외를 참조한다(예외절)미리 정의되지 않은 예외 예제 SQL> CREATE OR REPLACE PROCEDURE NonPreException_Test IS not_null_test EXCEPTION; -- STEP 1 /* not_null_test는 선언된 예외 .. 더보기
Oracle PL/SQL 강좌 7.2. 미리 정의된 예외(Predefined Exceptions) 오라클 PL/SQL은 자주 일어나는 몇가지 예외를 미리 정의해 놓았으며, 이러한 예외는 개발자가 따로 선언할 필요가 없다.미리 정의된 예외의 종류 - NO_DATA_FOUND : SELECT문이 아무런 데이터 행을 반환하지 못할 때 - DUP_VAL_ON_INDEX : UNIQUE 제약을 갖는 컬럼에 중복되는 데이터가 INSERT 될 때 - ZERO_DIVIDE : 0으로 나눌 때 - INVALID_CURSOR : 잘못된 커서 연산 - Predefined PL/SQL Exceptions 더 보기미리 정의된 예외 예제 SQL> CREATE OR REPLACE PROCEDURE PreException_test (v_deptno IN emp.deptno%TYPE) IS v_emp emp%ROWTYPE; BEG.. 더보기