프롤로그
수업내용과는 별도로 데이터베이스 MERGE와 패키지에 대해 과제를 내주셔서 조사 및 정리 해보도록 하겠습니다.
MERGE
- 여러 테이블의 데이터들을 합치는 병합할 때 사용하는 명령어
<문법>
1-MERGE INTO 테이블명(A)
2-USING 테이블명(B)
3-ON (병합조건)
4-WHEN MACHED THEN
5-UPDATE SET 업데이트 내용
(or DELETE WHERE 조건)
6-WHEN NOT MATCHED THEN
7-INSERT VALUES(컬럼명)
;
- A테이블과 B테이블의 내용을 합쳐서 A테이블에 모으는 명령어
- 기준은 3번 라인의 ON조건이 만족하면, A테이블의 내용은 B테이블의 내용으로 UPDATE or DELETE문이 수행
- ON조건이 만족하지않으면, B테이블의 내용이 A테이블로 신규 INSERT됩니다.
- 무언가 원하는 조건이 있을 경우 B테이블의 정보를 A테이블에 수정하고, 없으면 신규로 데이터 넣을 때 사용
<예제>
- MERGE INTO copy_emp c
USING employees e
ON (c.employee_id = 200911)
WHEN MATCHED THEN
UPDATE SET
c.first_name = e.first_name,
c.last_name = e.last_name,
c.email = e.email
WHEN NOT MATCHED THEN
INSERT (c.employee_id, c.first_name, c.last_name)
VALUES(e.employee_id, e.first_name, e.last_name);
- MERGE INTO emp
USING DUAL
ON (employee_id = 200911)
WHEN MATCHED THEN
UPDATE SET
first_name = 'John',
last_name = 'Petrucci',
email = 'dream@johnpetrucci.com'
WHEN NOT MATCHED THEN
INSERT (first_name, last_name, email, ...... )
VALUES ('John', 'Petrucci', 'dream@johnpetrucci.com');
패키지 (PACKAGE)
- 패키지는 업무나 기능면에서 연관성이 높은 프로시저, 함수 등 여러 개의 PL/SQL 서브 프로그램을 하나의 논리그룹으로 묶어 통합, 관리하는 데 사용하는 객체
- 오라클에서 패키지는 오라클 데이터베이스에 저장되어 있는 서로 관련있는 PL/SQL 프로지져와 함수들의 집합
- 한 패키지 안에 프로시저와 함수를 넣어놓고 필요할 때 패키지 내에 있는 프로시저와 함수를 뽑아 사용하는 식
- 선언부(스펙)과 본문(바디)로 구성
<패키지 장점>
-
모듈성
-- 서브프로그램을 포함한 여러 PL/SQL 구성요소를 모듈화하여 PL/SQL로 제작한 프로그램의 사용 및 관리에 도움
-- 모듈성: 잘 묶어 둔다는 의미로 프로그램의 이해를 쉽게하고 패키지 사이의 상호작용을 더 간편하고 명료하게 하는 역할
-
프로그램 설계의 용이성
-- 패키지에 포함할 서브프로그램은 완벽히 완성되지 않아도 정의가 가능
-
정보 은닉
-- 패키지 선언부는 외부에 공개되지만 패키지에 속한 커서, 함수, 프로시저의 세부 구현내용이 담겨있는 본문은 외부에서 볼 수 없다.
-- 정보 은닉 기능이 지원되는 것이며, 외부 모듈에 영향을 주지 않고도 패키지 본문 내용은 언제든지 수정할 수 있다.
-
보다 나은 성능
-- 패키지를 사용할 때 패키지에 포함한 모든 서브프로그램이 메모리에 한번에 로딩되는데 메모리에 로딩된 후의 호출은 디스크 I/O를 일으키지 않으므로 성능이 향상된다.
<패키지 구조>
- 패키지 선언절

- 패키지 본문
