怎么创建UNWRAP函数
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,本篇内容主要讲解"怎么创建UNWRAP函数",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么创建UNWRAP函数"吧!创建 UNWRAP 函数CREATE
千家信息网最后更新 2025年11月12日怎么创建UNWRAP函数
本篇内容主要讲解"怎么创建UNWRAP函数",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么创建UNWRAP函数"吧!
创建 UNWRAP 函数
CREATE OR REPLACE PACKAGE AMOSUNWRAPPER IS FUNCTION DEFLATE(SRC IN VARCHAR2) RETURN RAW; FUNCTION DEFLATE(SRC IN VARCHAR2, QUALITY IN NUMBER) RETURN RAW; FUNCTION INFLATE(SRC IN RAW) RETURN VARCHAR2;END;/CREATE OR REPLACE PACKAGE BODY AMOSUNWRAPPER IS FUNCTION DEFLATE(SRC IN VARCHAR2) RETURN RAW IS BEGIN RETURN DEFLATE(SRC, 6); END; FUNCTION DEFLATE(SRC IN VARCHAR2, QUALITY IN NUMBER) RETURN RAW AS LANGUAGE JAVA NAME 'UNWRAPPER.Deflate( java.lang.String, int ) return byte[]'; FUNCTION INFLATE(SRC IN RAW) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'UNWRAPPER.Inflate( byte[] ) return java.lang.String';END;//* Formatted on2011/8/18 13:00:16 (QP5 v5.163.1008.3004) */CREATE OR REPLACE JAVA SOURCE NAMED UNWRAPPERASimport java.io.*;import java.util.zip.*;public class UNWRAPPER { public static String Inflate(byte[] src) { try { ByteArrayInputStream bis = new ByteArrayInputStream(src); InflaterInputStream iis = new InflaterInputStream(bis); StringBuffer sb = new StringBuffer(); for(int c = iis.read(); c != -1; c = iis.read()) { sb.append((char)c); } return sb.toString(); } catch (Exception e) { } return null; } public static byte[] Deflate(String src, int quality) { try { byte[] tmp = new byte[src.length() + 100]; Deflater defl = new Deflater(quality); defl.setInput(src.getBytes("UTF-8")); defl.finish(); int cnt = defl.deflate(tmp); byte[] res = new byte[cnt ]; for(int i = 0; i < cnt; i++) res = tmp; return res; } catch (Exception e) { } return null; }}/ALTER JAVA SOURCE UNWRAPPER COMPILE//* Formatted on2011/8/18 13:02:57 (QP5 v5.163.1008.3004) */--为了输出中文,要修改java过程CREATE OR REPLACE JAVA SOURCE NAMED UNWRAPPERASimport java.io.*;import java.util.zip.*; public class UNWRAPPER { public static String Inflate(byte[] src) { try { ByteArrayInputStream bis = new ByteArrayInputStream( src ); InflaterInputStream iis = new InflaterInputStream( bis ); StringBuffer sb = new StringBuffer(); for(int c = iis.read(); c != -1; c = iis.read()) { sb.append((char) c); } String hello = new String(sb.toString().getBytes("iso8859-1"), "GBK"); return hello; } catch(Exception e) { } return null; } public static byte[] Deflate(String src, int quality) { try { byte[] tmp = new byte[src.length() + 100]; Deflater defl = new Deflater(quality); defl.setInput(src.getBytes("UTF-8")); defl.finish(); int cnt = defl.deflate(tmp); byte[] res = new byte[cnt]; for(int i = 0; i < cnt; i++) res = tmp; return res; } catch (Exception e) { } return null; }}/ALTER JAVA SOURCE UNWRAPPER COMPILE//* Formatted on2011/8/18 13:00:41 (QP5 v5.163.1008.3004) */CREATE OR REPLACE PROCEDURE UNWRAP(O IN VARCHAR, N IN VARCHAR, T IN VARCHAR) AS VWRAPPEDTEXT VARCHAR2(32767); VTRIMTEXT VARCHAR2(32767); VCHAR VARCHAR2(2); VREPCHAR VARCHAR2(2); VLZINFLATESTR VARCHAR2(32767); NLEN INTEGER; NLOOP INTEGER; NCNT INTEGER; CODE VARCHAR(512);BEGIN CODE := '3D6585B318DBE287F152AB634BB5A05F7D687B9B24C228678ADEA4261E03EB176F343E7A3FD2A96A0FE935561FB14D1078D975F6BC4104816106F9ADD6D5297E869E79E505BA84CC6E278EB05DA8F39FD0A271B858DD2C38994C480755E4538C46B62DA5AF322240DC50C3A1258B9C16605CCFFD0C981CD4376D3C3A30E86C3147F533DA43C8E35E1994ECE6A39514E09D64FA5915C52FCABB0BDFF297BF0A76B449445A1DF0009621807F1A82394FC1A7D70DD1D8FF139370EE5BEFBE09B97772E7B254B72AC7739066200E51EDF87C8F2EF412C62B83CDACCB3BC44EC069366202AE88FCAA4208A64557D39ABDE1238D924A1189746B91FBFEC901EA1BF7CE'; --sys.idltranslate表内容存到字符数组 VTRIMTEXT := ''; SELECT COUNT(*) INTO NCNT FROM DBA_SOURCE WHERE OWNER = O AND NAME = N AND TYPE = T; IF NCNT > 0 AND NCNT <= 5 THEN FOR I IN 1 .. NCNT LOOP IF I = 1 THEN SELECT RTRIM(SUBSTR(TEXT, INSTR(TEXT, CHR(10), 1, 20) + 1), CHR(10)) --保存去掉前边20行的BASE64码正文 INTO VLZINFLATESTR FROM DBA_SOURCE WHERE OWNER = O AND NAME = N AND TYPE = T AND LINE = I; ELSE SELECT TEXT INTO VLZINFLATESTR FROM DBA_SOURCE WHERE OWNER = O AND NAME = N AND TYPE = T AND LINE = I; END IF; VTRIMTEXT := VTRIMTEXT || VLZINFLATESTR; END LOOP; END IF; VTRIMTEXT := REPLACE(VTRIMTEXT, CHR(10), ''); NLEN := LENGTH(VTRIMTEXT) / 256; VWRAPPEDTEXT := ''; FOR I IN 0 .. NLEN LOOP --ifi< nLen then VWRAPPEDTEXT := VWRAPPEDTEXT || UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW(SUBSTRB(VTRIMTEXT, 256 * I + 1, 256))); --else --vWrappedtext:=vWrappedtext||utl_encode.base64_decode(utl_raw.cast_to_raw(substrb(vtrimtext,64*i+1 ))) ; --endif; --DBMS_OUTPUT.PUT_LINE(vWrappedtext); END LOOP; --vWrappedtext:=substr(vWrappedtext,41); NLEN := LENGTH(VWRAPPEDTEXT) / 2 - 1; VLZINFLATESTR := ''; FOR NLOOP IN 20 .. NLEN LOOP --从第41字节开始 VCHAR := SUBSTRB(VWRAPPEDTEXT, NLOOP * 2 + 1, 2); VLZINFLATESTR := VLZINFLATESTR || SUBSTR(CODE, TO_NUMBER(VCHAR, 'XX') * 2 + 1, 2); --从字符串变量匹配 --DBMS_OUTPUT.PUT_LINE(vLZinflatestr); END LOOP; --DBMS_OUTPUT.PUT_LINE(vLZinflatestr); DBMS_OUTPUT.PUT_LINE(AMOSUNWRAPPER.INFLATE(VLZINFLATESTR));END;/使用
exec unwrap('SYS','DBMS_ROWID','PACKAGE BODY');select * from dba_source where name='DBMS_ROWID';到此,相信大家对"怎么创建UNWRAP函数"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
函数
内容
UTF-8
学习
实用
更深
兴趣
变量
字符
字符串
字节
实用性
实际
操作简单
方法
更多
朋友
正文
网站
过程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
通用服务器介绍
常见的网络安全危害有哪些
服务器主板关闭cpu短路保护
河北品质软件开发价格优惠
云服务器防虚拟机检测软件
软件开发公司费用分析
软件开发中级工程师考试
计算机网络安全类书籍
vc服务器骗写线程池
建立数据库所需要的技术
初中英语网络安全方面作文
裁决战歌服务器连接失败
手机怎么远程云服务器
春秋航空软件开发怎么样
长春软件开发来选择吉网传媒
数据库连接故障
蚌埠app软件开发多少钱
无锡自动化软件开发风格
30g数据库共享
数据库空洞怎么办
服务器崩溃了怎么解决
数据库原理及应用答案尹志宇
网络安全盘点
工业设计软件开发专业
可信计算网络安全数据安全
软件开发流程包括哪些阶段
叶落乄初冬在哪个服务器
信阳市天气预报软件开发
安徽阿拉丁网络技术有限公司
微信网络安全发生亮剑