PLSQL06_Named Block
Named Block
1. Block유형
- Anonymous Block
- Named Block(=Stored Block)
- function
- procedure
- package ( = class )
- trigger
2. function
2-1. 함수 정의
- C:/SQLDEV/SQLF/PLSQL/function.sql
CREATE OR REPLACE FUNCTION CALC_BONUS(P_SALARY IN NUMBER, P_DEPTNO IN NUMBER)
-- 파라미터 정의시 LENGTH정의 X, TYPE만 정의한다!
-- LENGTH는 코딩으로 제어
RETURN NUMBER -- RETURN필수.
IS
V_BONUS_RATE NUMBER :=0;
V_BONUS NUMBER(7,2) :=0;
BEGIN
--근무부서별 Bonus차등 지급
IF P_DEPTNO = 10 THEN
V_BONUS_RATE := 0.1;
ELSIF P_DEPTNO = 20 THEN
V_BONUS_RATE := 0.2;
ELSIF P_DEPTNO = 30 THEN
V_BONUS_RATE := 0.3;
ELSE
V_BONUS_RATE := 0.05;
END IF;
V_BONUS := ROUND(NVL(P_SALARY,0) * V_BONUS_RATE, 2);
RETURN V_BONUS;
END CALC_BONUS;
/
2-2. 함수 확인
-- 함수 실행
@C:/SQLDEV/SQLF/PLSQL/function.sql
DESC CALC_BONUS;
--함수명 대소문자 구분하기 때문에 NAME='calc_bonus'는 불가능!
SELECT NAME, LINE, TEXT FROM USER_SOURCE WHERE NAME='CALC_BONUS';
2-3. WRAP
- TEXT 소스를 BINARY SOURCE로 변환.
- TEXT SOURCE상태로 배포시 내부 기술 유출될 수 있음.
WRAP INAME=function.sql
- 자동으로 .plb형태의 파일로 출력됨.
- 개발 진행중인 상태에서는 TEXT SOURCE가 효율적.
- 배포시 BINARY SOURCE상태로 배포 (WRAP)
- BINARY 상태에서 배포되므로, 원본 소스 관리 주의 필요.
- TEXT SOURCE는 원본 소스 손상시 데이터 딕셔너리에 저장되어 있어 언제든 추출 가능
- 상용화되는 특정 앱에만 한정적으로 사용한다.
-
일반 응용 앱에 사용시 유지보수할 때 문제 초래.
- WRAP 순서
- sql 스크립트 파일 생성
- Putty, VMWare에서 SQLPLUS실행
- edit 파일명.sql 입력하여 sql스크립트 생성
- 함수 등 입력후 esc누르고 wq로 저장하여 작성모드 탈출
- SQLPlus상태에서 host 입력하여 SQLPlus 탈출
- 파일이 위치한 경로로 이동 후,
WRAP INAME=파일명.sql
입력하면 파일명.plb 파일이 생성된다.(ls명령어로 확인가능) - exit 입력하여 다시 SQLPlus 모드로 돌아온 후
- @파일명.plb 입력하여 함수 실행하여 사용.
- sql 스크립트 파일 생성