PL SQL

PL/SQL 패키지 (Package) - 3 (패키지 작성 지침, 오버로드, 지속 상태, 상수 및 예외 표준화)

n.han 2016. 7. 7. 15:20

- 패키지 작성 지침

 

1) SpecBody 앞에 정의한다.

2) Spec은 공용 생성자만 포함해야 한다.

3) 세션이나 트랜잭션 전체에서 유지 관리해야 할 경우 Body 선언 부분에 해당 항목을 배치한다.

4) Spec이 변경될 때 참조 서브 프로그램을 재 컴파일 할 필요성을 줄인다.

5) Spec은 생성자를 가능한 한 적게 포함해야 한다.

 

- PL/SQL 서브 프로그램 오버로드

 

동일한 이름의 서브 프로그램을 두 개 이상 생성할 수 있다. 다만 파라미터가 달라야 한다. 또한 독립 형 서브 프로그램은 오버로드를 하지 않는다.

 

- Package의 지속 상태

 

1) 패키지가 처음으로 적재될 때 초기화 된다.

2) 세션 기간 동안 지속된다.

3) UGA(User Global Area)에 저장되고, 세션마다 고유하다.

4) 서브 프로그램이 호출되거나 공용 변수가 수정 시 변경될 수 있다.

5) Spec에서 PRAGMA SERIALLY_REUSABLE을 사용할 경우 세션 동안 지속되는 대신 서브 프로그램이 호출되는 동안 지속된다.

 

- 상수 및 예외 표준화

 

상수와 예외는 일반적으로 Body가 없는 패키지, Package Spec만을 사용하여 구현된다.

  1) 표준화의 이점

    - 일관성 있는 프로그램 개발

    - 보다 높은 수준으로 코드 재사용 증진

    - 간편한 코드 유지 관리

    - 전체 응용 프로그램에서 회사 표준 구

2) 표준화 대상 : 예외 이름, 상수 정의

 

3) 예외 표준화 : 응용 프로그램에 사용될 명명된 예외 및 사용자 정의 예외가 모두 포함된 표준화된 오류 처리 패키지를 생성한다.

CREATE OR REPLACE PACKAGE error_pkg IS

e_fk_err EXCEPTION;

e_seq_nbr_err EXCEPTION;

PRAGMA EXCEPTION_INIT (e_fk_err, -2292);

PRAGMA EXCEPTION_INIT (e_seq_nbr_err, -2277);

...

END error_pkg;

/

 

4) 상수 표준화 : 값을 변경하면 안 되는 로컬 변수를 사용하는 프로그램의 경우, 변수를 상수로 변환하여 유지 관리와 디버깅 작업을 줄인다. 하나의 Spec을 생성한 후 이 안에 모든 상수를 배치한다.

CREATE OR REPLACE PACKAGE constant_pkg IS

c_order_received CONSTANT VARCHAR(2) := 'OR';

c_order_shipped CONSTANT VARCHAR(2) := 'OS';

c_min_sal CONSTANT NUMBER(3) := 900;

END constant_pkg;