728x90
# 암호화
# 위 텍스트 파일에 패키지와 패키지 바디를 수행한다
1. EMP_INFO 패키지의 명세 코드를 아래의 파일 이름으로 저장
ed emp_info_package.sql
2. EMP_INFO 패키지의 명세 코드를 아래의 파일 이름으로 저장
ed emp_info_package_body.sql
3. emp_info_package_body.sql 를 emp_info_package.plb 로 암호화 시킴
C:\Users\실습실> wrap iname=emp_info_package_body.sql oname= emp_info_package.plb
4. scott 계정으로 다시 접속
C:\Users\실습실> sqlplus scott/tiger
5. 암호와된 body 스크립트를 열어보시오
ed emp_info_package.plb
- EMP_INFO 패키지의 명세 소스확인
select text
from user_source
where type = 'PACKAGE' nad name = 'EMP_INFO';
- EMP_INFO 패키지의 바디 소스 확인
select text
from user_source
where type = 'PACKAGE BODY' and name = 'EMP_INFO';
# 패키지 바디가 암호화된 모습을 확인할 수 있다
6. sql 파일과 plb 파일을 실행시켜 패키지 생성
패키지 파일은 암호화할 필요가 없고 패키지 바디는 암호화가 되있는 상태이다. 다른 곳에서 2개의 파일을 가지고 실행하면 소스가 보호된다.
SQL> @emp_info_package.sql
패키지가 생성되었습니다.
# 패키지 spec 생성
SQL> @emp_info_package.plb
패키지 본문이 생성되었습니다.
# plb 파일로 암호화된 패키지 body 생성
문제212. 사원 테이블에 순위 컬럼인 rnk를 추가하고 추가한 순위 컬럼에 직업별 순위를 갱신하는 프로시져를 생성하시오. 그리고 프로시져를 패키지로 만들어 암호화하시오
ALTER TABLE EMP
ADD rnk NUMBER(10);
CREATE OR REPLACE PROCEDURE pro_rnk
IS
CURSOR emp_cursor IS
SELECT ename, sal, job, empno, dense_RANK() OVER(PARTITION BY job ORDER BY sal desc) 순위
FROM EMP;
BEGIN
FOR emp_record IN emp_cursor LOOP
UPDATE EMP
SET rnk=emp_record.순위
WHERE empno=emp_record.empno;
END LOOP;
END;
/
CREATE OR REPLACE PACKAGE pack_rnk is
PROCEDURE pro_rnk;
END pack_rnk;
/
CREATE OR REPLACE PACKAGE BODY pack_rnk IS
PROCEDURE pro_rnk IS
CURSOR emp_cursor IS
SELECT ename, sal, job, empno, dense_RANK() OVER(PARTITION BY job ORDER BY sal desc) 순위
FROM EMP;
BEGIN
FOR emp_record IN emp_cursor LOOP
UPDATE EMP
SET rnk=emp_record.순위
WHERE empno=emp_record.empno;
END LOOP;
END pro_rnk;
END pack_rnk;
/
SQL> ed pack_rank_body.sql
C:\Users\실습실>wrap iname=pack_rank_body.sql oname=pack_rank_body.plb
SQL> ed pack_rank_body.plb
'빅데이터과정 > PL/SQL ' 카테고리의 다른 글
#16_140704_PL_SQL_종속성 (0) | 2014.07.15 |
---|---|
#15_140703_PACKAGE_OVERLOAD (0) | 2014.07.15 |
#15_140703_PL_SQL_PACKAGE (0) | 2014.07.15 |
#14_140702_PL_SQL_TRIGGER (0) | 2014.07.15 |
#14_140702_PL_SQL_RETURNING (0) | 2014.07.15 |