본문 바로가기

DB

(52)
OraclePL/SQL [커서 관리] 커서는 SELECT 또는 DML 등의 SQL처리를 위한 데이터를 저장하고 있는 오라클이 관리하는 메모리에 대한 일종의 포인터다. 커서는 PGA라 불리는 오라클 메모리 공간에 할당되는데, SQ이 수행되면 PGA 영역에 소트 영역과 세션정보, 커서 상태, 스택 공간 등 SQL 을 수행하기 위해 필요한 공간을 할당받게 된다. 또한 이 영역은 실제 SQL을 수행할 수 있도록 한다. 커서를 실행하기 위한 이런 준비과정을 '커서를 오픈한다' 라고 표현한다. 명시적 커서와 묵시적 커서 커서는 사용 방법에 따라 명시적(Explicit) 방식과 묵시적(Implicit) 방식, 두가지 방식으로 나뉜다. CURSOR 키워드를 이용하여 커서를 명시적으로 선언하면 명시적 커서라 부르고 , 선언없이 SQL을 직접 사용하면 묵시적..
Oracle PL/SQL [제어 구문] PL/SQL 에서는 다른 프로그래밍 언어와 마찬가지로 여러 종류의 제어 구문을 활용하여 PL/SQL 블록 안에서 논리적인 흐름을 변경할 수 있다. 위와 그림과 같이 True 가 되어 THEN 구문을 실행하고 그렇지 않을 경우에는 FALSE 가 되어 ELSE 구문을 실행하는 구조이다. IF 문의 마지막은 END IF로 마무리하면 됩니다. 조건 비교가 추가로 필요하다면 IF 또는 ELSE 문 안에 IF 문을 추가로 사용할 수 있다 --조건이 하나일 경우 IF condition THEN sequence of statments1; END IF; --하나의 조건과 그 외의 조건의 경우 IF condition THEN sequence of statments11; ELSE sequence of statments3; ..
Oracle PL/SQL 프로시저[패키지] 패키지는 서로 관련 있는 프로시저, 함수, 타입들의 집합이다. 하나의 업무를 수행하기 위해 여러개의 프로시저, 함수, 타입이 필요할 경우 하나의 패키지로 묶어 생성한다면 관리하기도 쉽고 운영 안정성 측면에서도 유리하다. 패키지를 사용하려면 유지보수의 편이성이 높아지며, 프로그램 간 종속성 체인을 끊고 캡슐화를 지원하며 , 세션 지속형 변수를 지원하는 등 여러이점이 있으므로 프로그램의 품질 향상과 안정성을 위해 프로시저나 함수를 개별적으로 생성하여 사용하는 것보다 패키지를 사용하것이 좋다 패키지 생성 패키지 명세 (sercification)과 몸체(body) 두 부분으로 이루어져 있다. 명세는 패키지 내 어느 서브프로그램 에서도 사용될 수 있는 전역 변수를 선언하며, 프로그램을 어떻게 호출하고 커서를 어떻..
Oracle SQL(서브쿼리) 서브 쿼리란 한 SQL 문장 안에서 보조로 사용되는 또다른 SELECT 문을 의미한다. 최종 결과를 출력하는 쿼리를 메인 쿼리라고 한다면 , 이를 위한 중간 단계 혹은 보조 역할을 하는 SELECT 문을 서브쿼리라 한다. 조인 절에서 소개했던 SQL문 중 괄호 안에 들어있는 SELECT문을 서브 쿼리로 보면 되고 따라서 서브 쿼리는 여러개를 사용할수 있다. 서브쿼리는 다양한 형태로 사용된다 SELECT , FROM , WHERE 절 보두에서 사용가능하다. ISNERT,UPDATE,DELETE 문에서도 사용할수 있다. 연관성 없는 서브쿼리 메인 쿼리와의 연관성이 없는 쿼리를 말한다. 조인조건이 걸리지 않는 서브쿼리를 말한다 SELECT COUNT(*) FROM EMPLOYEES WHERE SALARY >=..
Oracle PL/SQL [함수] 함수는 값을 반환하는 PL/SQL 블록의 일종이다. 함수는 단 하나의 결과 값만을 반드시 반환해야 하는 특징을 가진다. 또다른 차이점은 함수는 SQL 문에서 바로 호출하여 사용할 수 있다는 점이다. 그러나 SQL 문에서 무분별 하게 함수를 호출하여 사용하면 성능이 저하될 수 있으므로 주의가 필요하다. 함수생성 기본적인 생성 구문은 프로시저와 거의 동일하다 입력 매개변수가 없을경우 Default구문을 사용하여 기본 값을 설정할 수 있으며, RETURN 문과 함께 반환할 값의 데이터 타입을 선언해야 한다. 또한 함수 내에 반드시 하나 이상의 RETURN 문이 포함되어야 한다. CREATE OR REPLACE FUNCTION () RETURN DATATYPE IS BEGIN RETURN; EXCEPTION E..
Oracle PL/SQL 프로시저 실행방법 BEGIN end; exec ; 방법 설명 Positional 선언한 매개변수 순으로 차례로 변수 값 입력 Named Association '=>'구문과 함께 매개변수 이름을 사용하여 변수 값 입력 Combination 앞의 값은 Positional 방법으로, 나머지 값은 Named Association 방법으로 혼합하여 입력 create or replace PROCEDURE EMP_COUNT (P_DEPTNO IN NUMBER DEFAULT 20, -- 입력변수 O_EMP_COUNT OUT NUMBER) --프로시저 출력 변수 IS --커서 선언 CURSOR GET_EMP_DATA IS SELECT COUNT(*) FROM EMP WHERE DEPTNO = P_DEPTNO; I_COUNT NUMBER;..
Oracle PL/SQL 프로시저[커서] 명시적 커서를 패키지에서 선언하고 사용할수 있는데 변수나 상수와 마찬가지로 패키지 내에서 선언한 커서는 세션이 살아 있는 동안 유지된다. 변수는 값이 유지되지만, 커서는 그 상태까지 유지되는 특징이 있다. 패키지 선언부에 커서 전체를 선언하는 형태 CREATE OR REPLACE PACKAGE EMP_CUR IS CURSOR PC_EMPDEP_CUR(DEP_ID IN DEPARTMENTS.DEPARTMENT_ID%TYPE) IS SELECT E.EMPLOYEE_ID , A.EMP_NAME ,B.DEPARTMENT_ID FROM EMPLOYEES E, DEPARTMENTS B WHERE E.DEPARTMENT_ID = DEP_ID AND E.DEPARTMENT_ID = B.DEPARTMENT_ID; END..
Oracle PL/SQL 프로시저 [패키지] 논리적 연관성이 있는 PL/SQL 타입,변수,상수,서브 프로그램 ,커서 예외 등의 항목을 묶어 놓은 객체다. 패키지란 말은 '포장' 이란 뜻인데, 오라클에서 말하는 패키지 역시 PL/SQL 구성요소, 서브 프로그램들을 불러 모아 하나의 이름으로 묶어 놓은 객체라고 보면 된다. 모듈화 기능 패키지의 가장 큰 장점은 모듈화가 가능하다는 점이다. 패키지는 여러 함수나 프로시저를 묶어 놓은 객체다. 즉 업무적으로 연관성이 있거나 비슷한 기능을 수행하는 서브 프로그램이나 변수,상수,커서, 사용자 정의 타입들을 하나의 패키지에 담아두면 이해 하기도, 관리하기도 쉽다. 캡슐화 캡슐화란 꼭 필요한 부분만 외부에 공개하고 그외 세부 로직은 접근을 차단한다는 개념이다. 패키지 선언부는 외부에 공개되지만 패캐지에 속한 커서..