본문 바로가기

IT

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.. 더보기
Oracle PL/SQL 강좌 7.1. 예외(Exception) 예외(Exception)란? 오라클 PL/SQL의 오류를 예외라고 한다. 오류는 PL/SQL을 컴파일 할때 문법적인 오류로 발생하는 컴파일 타임 오류와, 프로그램을 실행 할 때 발생하는실행타임 오류로 구분 할 수 있다.PL/SQL오류의 종류예 외설 명처 리미리 정의된 오라클 서버 오류(Predefined Oracle Server)PL/SQL에서 자주 발생하는 약20개의 오류선언할 필요도 없고, 발생시에 예외 절로 자동 트랩(Trap) 된다.미리 정의되지 않은 오라클 서버 오류 (Non-Predefined Oracle Server)미리 정의된 오라클 서버 오류를 제외한 모든 오류선언부에서 선언해야 하고 발생시 자동 트랩된다.사용자 정의 오류 (User-Defined)개발자가 정한 조건에 만족하지 않을경우 .. 더보기
Oracle PL/SQL 강좌 6.2.5. The WHERE CURRENT OF Clause WHERE CURRENT OF ROWID를 이용하지 않고도 현재 참조하는 행을 갱신하고 삭제할 수 있게 한다. 추가적으로 FETCH문에 의해 가장 최근에 처리된 행을 참조하기 위해서 "WHERE CURRENT OF 커서이름 " 절로DELETE나 UPDATE문 작성이 가능하다. 이 절을 사용할 때 참조하는 커서가 있어야 하며, FOR UPDATE절이 커서 선언 query문장 안에 있어야 한다. 그렇지 않으면 에러가 발생한다.WHERE CURRENT OF 예제 -- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용 SQL> SET SERVEROUTPUT ON; SQL> CREATE OR REPLACE PROCEDURE where_current IS CURSOR emp_list IS SELECT em.. 더보기
Oracle PL/SQL 강좌 6.2.4. 파라미터가 있는 커서(Cursors with Parameters) 커서가 OPEN되고 질의가 실행되면 매개 변수 값을 커서에 전달할 수 있다. 다른 active set을 원할때 마다 explicit 커서를 따로 선언해야 한다.파라미터가 있는 커서 문법파라미터가 있는 커서 예제 SQL> CREATE OR REPLACE PROCEDURE ParamCursor_Test (param_deptno emp.deptno%TYPE) IS v_ename emp.ename%TYPE; -- Parameter가 있는 커서의 선언 CURSOR emp_list(v_deptno emp.deptno%TYPE) IS SELECT ename FROM emp WHERE deptno = v_deptno; BEGIN DBMS_OUTPUT.ENABLE; DBMS_OUTPUT.PUT_LINE(' ****** .. 더보기
Oracle PL/SQL 강좌 6.2.3. 명시적 커서의 속성(Explicit Cursor Attributes) Explicit Cursor 속성%ISOPEN- 커서가 OPEN되어 있으면 TRUE- %ISOPEN속성을 이용하여 커서가 열려있는지 알 수 있다.%NOTFOUND- 패치한 데이터가 행을 반환하지 않으면 TRUE- %NOTFOUND속성을 이용하여 루프를 종료 할 시점을 찾는다.%FOUND- 패치한 데이터가 행을 반환하면 TRUE%ROWCOUNT- 현재까지 반환 된 모든 데이터 행의 수- %ROWCOUNT속성을 이용하여 정확한 숫자만큼의 행을 추출한다.Explicit Cursor 속성 예제 SQL> CREATE OR REPLACE PROCEDURE AttrCursor_Test IS v_empno emp.empno%TYPE; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; CUR.. 더보기