본문 바로가기

분류 전체보기

(135)
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 구성요소, 서브 프로그램들을 불러 모아 하나의 이름으로 묶어 놓은 객체라고 보면 된다. 모듈화 기능 패키지의 가장 큰 장점은 모듈화가 가능하다는 점이다. 패키지는 여러 함수나 프로시저를 묶어 놓은 객체다. 즉 업무적으로 연관성이 있거나 비슷한 기능을 수행하는 서브 프로그램이나 변수,상수,커서, 사용자 정의 타입들을 하나의 패키지에 담아두면 이해 하기도, 관리하기도 쉽다. 캡슐화 캡슐화란 꼭 필요한 부분만 외부에 공개하고 그외 세부 로직은 접근을 차단한다는 개념이다. 패키지 선언부는 외부에 공개되지만 패캐지에 속한 커서..
Oracle PL/SQL 프로시저 매개변수 타입 설명 IN 프로시저 안으로 호출 프로그램의 상수 값을 전달하는 매개변수를 선언하며 전달되는 값이 NULL일 경우 기본값(Default)을 설정할 수도 있음 OUT 호출 프로그램으로 프로시저의 결과 값을 전달하는 매개변수 선언 IN OUT 프로시저 안으로 호출 프로그램의 상수 값을 전달하고, 결과 값을 다시 호출 프로그램으로 전달하는 매개변수를 선언 IN 매개변수를 이용하여 입력받을 매개변수를 설정하고 해당 변수 이름으로 프로시저 내에서 사용하면 된다. IN값에 아무 값도 입력되지 않으면(NULL)기본값 으로 설정된다. OUT매개 변수는 프로시저를 실행하고 반환할 때 사용되는 변수 이름으로 IS절애서 별도의 선언없이 프로시저 내에서 해당 변수에 값을 입력하면 된다. CREATE OR REPL..
Oracle PL/SQL 프로시저 [데이터 타입 간 형 변환] 일부 데이터 타입의 경우 상호 데이터 타입 변환이 가능하다 가령 문자에서 숫자, 숫자에서 문자 ,문자에서 날짜 또는 날짜에서 문자 타입으로 변환이 가능하다. 형 변환 함수를 사용하여 명시적 으로 변환할 수 있으며 , 변경이 가능한 경우에 한해서 오라클에 의해 묵시적으로 자동 변환될 수도 있습니다. 그러나 가급적 올바른 데이터 타입을 선정하여 사용하도록 하고, 변환이 필요할 경우 명시적으로 선언하여, 개발자도 모르는 사이에 형 변환에 따른 문제가 발생하지 않도록 하는 것이 중요하다. DECLARE I_NUM_EMPNO NUMBER; I_VAR_EMPNO VARCHAR2(100); BEGIN --NUMBER형의 값을 VARCHAR2 형 변수에 입력 SELECT EMPNO INTO I_VAR_EMPNO FRO..
Oracle PL/SQL 프로시저[커서와FOR문] FOR 문은 커서와함께 또 다른 형태로 시용할수 있다. FOR 인덱스 IN [REVERS] 초기값..최종값 LOOP 처리문; END LOOP; 커서와 함께 사용될 경우 FOR 문 구문형식 FOR 레코드 IN 커서명(매게변수1.. ) LOOP 처리문; END LOOP; 해당커서의 패치가 끝나면 자동으로 LOOP 가 종료된다. 레코드는 테이블 로우 전체를 담아둘 수 있는 오라클 데이터 타입이다. DECLARE --커서선언 CURSOR cur_emp_dep (cp_department_id employees.department_id%TYPE) IS SELECT employee_name FROM employees WHERE department_id = cp_department_id BEGIN -- FOR 문을 통..
Oracle PL/SQL 프로시저 [ 커서] 커서란 특정 SQL 문장을 처리한 결과를 담고 있는 영역 (PRIVATE SQL 이라는 메모리 영역)을 가리키는 일종의 포인터로, 커서를 사용하면 처리된 SQL 문장의 결과 집합에 접근할 수 있다. SQL문은 집합적 언어이므로 임의의 SQL문이 처리된 결과의 로우수는 한개 이상이다. 커서의 종류에는 묵시적 커서와 명시적 커서가 있다. 묵시적 커서란 오라클 내부에서 자동으로 생성되어 사용하는 커서로 , PL/SQL 블록에서 실행하는 SQL 문장 (INSRT,UPDATE,MERGE,DELETE,SELECT INTO) 이 실행될 때마다 자동으로 만들어져 사용된다. 개발자 입장에서는 이러한 커서의 동작에 관여할 수는 없지만, 커서 속성을 이용하면 해당 커서에 대한 여러가지 정보를 얻어낼 수 있다. 반면 명시적 ..