1 概述
1. 加密:隐藏 pl/sql 关键代码
2. 注意
(1) 加密后,默认的文件类型 '.plb'
(2) pl/sql 没有提供解密工具(百度上有 ←_←)
效果展示:
2 加密
语法:
-- 在装 Oracle 的机器上用命令行输入
-- "=" 两边不要留空格
wrap iname=原文件 [oname=目标文件]
> wrap iname=d:\test.sql oname=d:\new_test.sql;
示例:加密 D:\加密测试 目录下的 sql 文件
快捷键:win + r,输入 cmd 进入 windows 命令窗口
C:\>D: -- 进入盘符 'D'
D:\>cd D:\加密测试 -- 进入对应的目录
D:\加密测试>wrap iname=01_pkg_head.sql
D:\加密测试>wrap iname=02_pkg_body.sql oname=02_pkg_body_wrap.sql
测试结果:
文件路径:
3 源码
包头,路径:D:\加密测试\01_pkg_head.sql
CREATE OR REPLACE PACKAGE scott.pkg_public_toolkit IS
PROCEDURE p_division_operation(i_num1 IN NUMBER,
i_num2 IN NUMBER,
o_result OUT NUMBER,
o_flag OUT VARCHAR2,
o_message OUT VARCHAR2);
FUNCTION f_division_operation(i_num1 IN NUMBER,
i_num2 IN NUMBER) RETURN NUMBER;
END pkg_public_toolkit;
/
包体,路径:D:\加密测试\02_pkg_body.sql
CREATE OR REPLACE PACKAGE BODY scott.pkg_public_toolkit IS
-- ******************************************************
-- 功能简述:计算两个数的除法,并返回
-- 参数说明:i_num1、i_num2 要运算的两个值
-- o_result 运算返回的结果
-- o_flag 程序执行标志(0:成功,1:失败)
-- o_message 程序执行信息
-- ******************************************************
PROCEDURE p_division_operation(i_num1 IN NUMBER,
i_num2 IN NUMBER,
o_result OUT NUMBER,
o_flag OUT VARCHAR2,
o_message OUT VARCHAR2) IS
BEGIN
o_flag := '0';
o_message := '程序执行成功';
-- 除法运算规则
o_result := i_num1 / i_num2;
EXCEPTION
WHEN OTHERS THEN
o_flag := '1';
o_message := '程序执行失败';
IF i_num2 = 0 THEN
raise_application_error(-20001, '除数不能为 0 ,i_num2 = 0');
END IF;
END p_division_operation;
-- ******************************************************
-- 功能简述:计算两个数的除法,并返回
-- 参数说明:i_num1、i_num2 要运算的两个值
-- ******************************************************
FUNCTION f_division_operation(i_num1 IN NUMBER,
i_num2 IN NUMBER) RETURN NUMBER IS
o_result NUMBER(10, 2);
o_flag VARCHAR2(2);
o_message VARCHAR2(100);
BEGIN
p_division_operation(i_num1 => i_num1,
i_num2 => i_num2,
o_result => o_result,
o_flag => o_flag,
o_message => o_message);
RETURN o_result;
END f_division_operation;
END pkg_public_toolkit;
/