본문 바로가기

IT/오라클

Oracle PL/SQL 강좌 6.2.1. 명시적 커서(EXPLICIT CURSOR) 커서란 무엇인가?- 커서는 Private SQL의 작업 영역이다.- 오라클 서버에 의해 실행되는 모든 SQL문은 연관된 각각의 커서를 소유하고 있다.- 커서의 종류암시적 커서 : 모든 DML과 PL/SQL SELECT문에 대해 선언된다.명시적 커서 : 프로그래머에 의해 선언되며 이름이 있는 커서이다.Explicit Cursor의 흐름도?문법(Syntax)커서 열기(OPEN)- 커서의 열기는 OPEN문을 사용한다.- 커서안의 검색이 실행되며 아무런 데이터행을 추출하지 못해도 에러가 발생하지 않는다.- 문법 : OPEN cursor_name;커서 패치(FETCH)- 커서의 FETCH는 현재 데이터 행을 OUTPUT변수에 반환 한다.- 커서의 SELECT문의 컬럼의 수와 OUTPUT변수의 수가 동일해야 한다... 더보기
Oracle PL/SQL 강좌 6.1. 암시적 커서(Implicit Cursor) 암시적 커서(Implicit Cursor)란? 암시적인 커서는 오라클이나 PL/SQL실행 메커니즘에 의해 처리되는 SQL문장이 처리되는 곳에 대한 익명의 주소이다. 오라클 데이터베이스에서 실행되는 모든 SQL문장은 암시적인 커서가 생성되며, 커서 속성을 사용 할 수 있다. 암시적 커서는 SQL 문이 실행되는 순간 자동으로 OPEN과 CLOSE를 실행 한다.암시적 커서의 속성- SQL%ROWCOUNT : 해당 SQL 문에 영향을 받는 행의 수- SQL%FOUND : 해당 SQL 영향을 받는 행의 수가 한 개 이상일 경우 TRUE- SQL%NOTFOUND : 해당 SQL 문에 영향을 받는 행의 수가 없을 경우 TRUE- SQL%ISOPEN : 항상 FALSE, 암시적 커서가 열려 있는지의 여부 검색암시적 커.. 더보기
Oracle PL/SQL 강좌 5.2. 조건제어(IF) IF문 문법IF문 예제 SQL> CREATE OR REPLACE PROCEDURE Dept_Search (p_empno IN emp.empno%TYPE ) IS v_deptno emp.deptno%type ; BEGIN DBMS_OUTPUT.ENABLE; SELECT deptno INTO v_deptno FROM emp WHERE empno = p_empno; IF v_deptno = 10 THEN DBMS_OUTPUT.PUT_LINE( ' ACCOUNTING 부서 사원입니다. ' ); ELSIF v_deptno = 20 THEN DBMS_OUTPUT.PUT_LINE( ' RESEARCH 부서 사원입니다. ' ); ELSIF v_deptno = 20 THEN DBMS_OUTPUT.PUT_LINE( ' S.. 더보기
Oracle PL/SQL 강좌 5.1.2. LOOP문, WHILE문 LOOP문 문법- EXIT 문이 사용되었을 경우, 무조건 LOOP문을 빠져나간다.- EXITH WHEN 이 사용될 경우 WHEN 절에 LOOP를 빠져 나가는 조건을 제어 할 수 있다.LOOP문 예제 -- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용 SQL> SET SERVEROUTPUT ON ; SQL> DECLARE v_cnt NUMBER := 100; BEGIN DBMS_OUTPUT.ENABLE ; LOOP INSERT INTO emp(empno, ename , hiredate) VALUES(v_cnt, 'test'||to_char(v_cnt), sysdate); v_cnt := v_cnt+1; EXIT WHEN v_cnt > 110; END LOOP; DBMS_OUTPUT.PUT_LI.. 더보기
Oracle PL/SQL 강좌 5.1.1. FOR LOOP FOR LOOP 문법- index 는 자동 선언되는 binary_integer형 변수이고, 1씩 증가 한다.- reverse 옵션이 사용 될 경우 index 는 upper_bound에서 lower_bound로 1씩 감소 한다.- IN 다음에는 coursor나 select 문이 올 수 있다.FOR LOOP 예제 DECLARE -- 사원 이름을 출력하기 위한 PL/SQL 테이블 선언 TYPE ename_table IS TABLE OF emp.ename%TYPE INDEX BY BINARY_INTEGER; -- 사원 급여를 출력하기 위한 PL/SQL 테이블 선언 TYPE sal_table IS TABLE OF emp.sal%TYPE INDEX BY BINARY_INTEGER; ename_tab ename_ta.. 더보기