의료와 의료와 경제.pdf · 2011-10-05 · 사고 파는 물품의 내용과 질이 ... 국민의료비의 정의와 현황 ... 영역도 있지만, 삶의 질을 다루는
오라클 SQL과 PL/SQL을 다루는 기술 - 12장.패키지
-
Upload
chariehong -
Category
Software
-
view
77 -
download
13
Transcript of 오라클 SQL과 PL/SQL을 다루는 기술 - 12장.패키지
The Technique of Java Programming
들어가기
이 자료는 교육 등 비영리 목적으로만 사용해야 합니다 !!!!
만든사람 및 책 소개
• 오라클 SQL과 PL/SQL을 다루는 기술 : 오라클 프로그래밍 , 현장 밀착 입문서는 따로 있다 !
• 홍형경
• 주요 저서 : - 〈뇌를 자극하는 오라클 프로그래밍 SQL&PL/SQL
- Head First 시리즈를 비롯해 다수의 책 번역
함수와 프로시저 관리를 효율을 높이는 패키지
셋째 마당 . 업무 효율을 높이는 실전 PL/SQL 프로그래밍
12장
01 패키지
패키지 해부
패키지 데이터
기타 패키지 특징
02
함수와 프로시저 관리를 효율을 높이는 패키지
03
04
01
패키지
패키지
● 논리적 연관성을 가진 PL/SQL 타입 , 변수 , 상수 , 서브 프로그램 , 커서 , 예외 등의 항목을 묶어 놓은 객체
● 패키지 선언부와 본문으로 구성됨
● 모듈화
● 프로그램 설계의 용이성
● 캡슐화
● 보다 나은 성능
02
패키지 선언부 (Specification)
패키지 해부
● 사용자 정의 타입 , 변수 , 상수 , 예외 , 그리고 서브 프로그램의 골격을 선언해 놓는 부분
● 선언부 구조
CREATE OR REPLACE PACKAGE 패키지명 IS TYPE_ 구문 ; 상수명 CONSTANT 상수 _ 타입 ; 예외명 EXCEPTION; 변수명 변수 _ 타입 ; 커서구문 ; FUNCTION 함수명 ( 매개변수 1 IN 매개변수 1_ 타입 , 매개변수 2 IN 매개변수 2_ 타입 , … ) RETURN 반환타입 ; PROCEDURE 프로시저명 ( 매개변수 1 [IN, OUT, INOUT] 매개변수 1_ 타입 , 매개변수 2 [IN, OUT, INOUT] 매개변수 2_ 타입 , … ); … END 패키지명 ;
02
패키지 본문 (Body)
패키지 해부
● 선언부에서 선언한 커서 , 함수 , 프로시저의 구현부
● 본문 구조
CREATE OR REPLACE PACKAGE BODY 패키지명 IS상수명 CONSTANT 상수 _ 타입 ;변수명 변수 _ 타입 ;커서정의구문 ; FUNCTION 함수명 ( 매개변수 1 IN 매개변수 1_ 타입 , 매개변수 2 IN 매개변수 2_ 타입 , … ) RETURN 반환타입 IS IS …. BEGIN …. END 함수명 ;
02
패키지 본문 (Body)
패키지 해부
● 본문 구조
CREATE OR REPLACE PACKAGE BODY 패키지명 IS……
PROCEDURE 프로시저명 ( 매개변수 1 [IN, OUT, INOUT] 매개변수 1_ 타입 , 매개변수 2 [IN, OUT, INOUT] 매개변수 2_ 타입 , … ) IS …. BEGIN …. END 프로시저명 ; … END 패키지명 ;
02
패키지 사용
패키지 해부
● “ 패키지명 . 서브 _ 프로그램명” , “ 패키지명 . 변수” 형태로 사용
● 인사업무를 처리하는 hr_pkg 패키지
ㆍ fn_get_emp_name 사번을 전달받아 이름을 반환하는 함수 ㆍ new_emp_proc 신규사원을 등록하는 프로시저 ㆍ retire_emp_proc 퇴사한 사원을 처리하는 프로시저
● 일반적인 함수 , 프로시저 사용법과 동일하지만 , 맨 앞에 “패키지명 .” 이 붙여야 함
03
패키지 상수와 변수
패키지 데이터
● 패키지 내에 상수나 변수 선언 시 , 생존주기는 세션 단위
세션이 살아있는 동안 데이터가 메모리 상에 유지
● “ 패키지명 . 상수명” , “ 패키지명 . 변수명” 형태로 참조
● 패키지 선언부에서 선언한 변수
공용항목 (Public Item) 으로 패키지 외부에서 참조 , 접근 가능
● 패키지 본문에서 선언한 변수
내부 ( 전용 ) 항목 (Private Item) 으로 패키지 내부에서만 참조 , 접근 가능
외부에서 전용항목 변수 참조 , 접근을 위해서는 패키지 함수 , 프로시저를 이용해야 함
03
패키지 커서
패키지 데이터
● 패키지 내에 명시적 커서를 정의해 사용 가능
● “ 패키지명 . 커서명” 형태로 참조 가능
● 패키지 선언부에서 커서 헤더와 정의부분 ( 패키지 쿼리 ) 전체를 선언해 사용하는 경우
● 패키지 선언부에서는 커서 헤더만 , 본문에서 정의부분을 선언해 사용하는 경우
패키지 커서 정의부분을 외부에 숨길 수 있음
선언부에서 반드시 “ RETURN 커서반환타입”을 명시해야 함
● 패키지 커서 역시 세션이 살아있는 동안 유지되므로 패키지 커서를 사용한 다음 반드시 해당
커서를 닫아야 한다
03
패키지 레코드와 컬렉션
패키지 데이터
● 패키지 내에 레코드와 컬렉션 타입 변수 선언 가능
● TYPE 문으로 레코드나 컬렉션 타입 선언 후 , 해당 변수 선언해 사용
● 사용 예
CREATE OR REPLACE PACKAGE ch12_col_pkg IS -- 중첩 테이블 선언 TYPE nt_dep_name IS TABLE OF VARCHAR2(30); -- 중첩 테이블 변수 선언 및 생성자로 초기화 pv_nt_dep_name nt_dep_name := nt_dep_name(); …
04
PRAGMA SERIALLY_REUSABLE 옵션
기타 패키지 특징
● 패키지 선언부와 본문에 “ PRAGMA SERIALLY_REUSABLE;” 설정
● 패키지 변수 , 커서 등의 생명주기가 세션이 아닌 호출 단위로 설정됨
● 같은 세션이라도 값이 공유되지 않음
04
오버로딩 (Overloading)
기타 패키지 특징
● 객체지향의 오버로딩 기능 지원
● 패키지에서 선언한 함수와 프로시저에 한해 매개변수가 다른 경우 , 동일한 이름으로 생성 가능
04
유용한 시스템 패키지
기타 패키지 특징
● DBMS_APPLICATION_INFO : 프로시저 수행 시 세션 정보에 해당 프로시저 정보를 등록
● DBMS_ERRLOG : DML 작업 중 오류 발생 시 오류 로그 정보를 담을 테이블을 생성하는
CREATE_ERROR_LOG 라는 프로시저를 제공한다
● DBMS_METADATA : 객체상세정보 추출
● DBMS_LOB : LOB 타입 처리
● DBMS_OUTPUT : 값 출력
● DBMS_RANDOM : 난수 발생
● DBMS_SQL : 동적 쿼리
04
유용한 시스템 패키지
기타 패키지 특징
● DBMS_SCHEDULER 와 DBMS_JOB : 스케줄 처리
● UTL_FILE : 운영체제의 파일 처리
● UTL_SMTP 와 UTL_MAIL : 이메일 전송