返回顶部
首页 > 资讯 > 数据库 >怎么创建UNWRAP函数
  • 783
分享到

怎么创建UNWRAP函数

2024-04-02 19:04:59 783人浏览 泡泡鱼
摘要

本篇内容主要讲解“怎么创建UNWRAP函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么创建UNWRAP函数”吧!创建 UNWRAP 函数CREATE&nb

本篇内容主要讲解“怎么创建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;
/

CREATE OR REPLACE JAVA SOURCE NAMED UNWRAPPER
AS
import 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
/

--为了输出中文,要修改java过程
CREATE OR REPLACE JAVA SOURCE NAMED UNWRAPPER
AS
import 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
/

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函数”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么创建UNWRAP函数

本文链接: https://lsjlt.com/news/63553.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么创建UNWRAP函数
    本篇内容主要讲解“怎么创建UNWRAP函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么创建UNWRAP函数”吧!创建 UNWRAP 函数CREATE&nb...
    99+
    2024-04-02
  • Mysql怎么创建函数
    这篇文章主要介绍了Mysql怎么创建函数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql怎么创建函数文章都会有所收获,下面我们一起来看看吧。Mysql如何创建函数DEL...
    99+
    2023-03-13
    mysql
  • oracle怎么创建函数
    在 oracle 中创建函数的步骤为:1. 指定函数名称;2. 定义参数;3. 指定返回值类型;4. 编写函数体;5. 结束函数。例如,计算折扣金额的函数为:create functio...
    99+
    2024-05-13
    oracle
  • navicat怎么创建函数
    在 navicat 中创建函数的步骤:连接数据库在对象管理器中创建新函数输入函数名称、参数、返回值类型和函数体选择函数类型:deterministic 或 nondeterministi...
    99+
    2024-05-30
    navicat
  • php函数之怎么创建一个函数
    小编给大家分享一下php函数之怎么创建一个函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!函数通常分为传统定义与近代定义,其实两个定义本质是相同的,只是出发点不...
    99+
    2023-06-20
  • python匿名函数怎么创建
    本篇内容主要讲解“python匿名函数怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python匿名函数怎么创建”吧!前言在定义函数的时候,不想给函数起一个名字。这个时候就可以用lamb...
    99+
    2023-06-22
  • matlab匿名函数怎么创建
    在MATLAB中,可以使用以下语法创建匿名函数: 函数句柄 = @(输入参数) 表达式 其中,函数句柄是一个变量,用于保存匿名函数的...
    99+
    2023-10-24
    matlab
  • laravel怎么创建全局函数
    本篇内容介绍了“laravel怎么创建全局函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言一直觉得ThinPHP中的公共函数是一个很好...
    99+
    2023-07-04
  • php中怎么创建一个函数
    这篇文章主要讲解了“php中怎么创建一个函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中怎么创建一个函数”吧!函数通常分为传统定义与近代定义,其实两个定义本质是相同的,只是出发点不...
    99+
    2023-06-20
  • matlab怎么创建及调用函数
    在MATLAB中,可以通过以下步骤来创建和调用函数:1. 创建函数文件:创建一个新的.m文件,并将其命名为函数名。例如,创建一个名为...
    99+
    2023-09-14
    matlab
  • 怎么在Oracle12C数据库创建wm_concat函数
    本篇内容介绍了“怎么在Oracle12C数据库创建wm_concat函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2024-04-02
  • 怎么在python中创建销毁函数
    怎么在python中创建销毁函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、说明_new_在对象实例化之前调用,new()方法将返回cls(cls代表当前...
    99+
    2023-06-15
  • mysql创建函数报错怎么解决
    当在MySQL中创建函数时,可能会遇到各种错误。以下是一些常见的错误和解决方法: 错误:函数已经存在 解决方法:如果函数已经存在...
    99+
    2024-04-09
    mysql
  • Python中怎么利用函数创建字典
    Python中怎么利用函数创建字典,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在Python/C API中提供了PyDict_New()函数用以创建一个新的字...
    99+
    2023-06-17
  • python中怎么用list()函数创建列表
    在Python中,可以使用list()函数来创建一个空列表或从其他可迭代对象(如字符串、元组、集合等)中创建一个新的列表。以下是几种...
    99+
    2023-10-20
    python
  • 怎么创建和调用Python中的函数
    创建函数函数用 def 语句创建,语法如下:def 函数名(参数列表): # 具体情况具体对待,参数可有可无 """函数说明文档字符串""" ...
    99+
    2023-05-20
    Python
  • SQL Server怎么创建用户定义函数
    本文小编为大家详细介绍“SQL Server怎么创建用户定义函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQL Server怎么创建用户定义函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-06-30
  • MySQL存储过程和函数怎么创建
    这篇文章主要介绍“MySQL存储过程和函数怎么创建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL存储过程和函数怎么创建”文章能帮助大家解决问题。1.0  创建存储过程和函数创建存...
    99+
    2023-06-30
  • oracle函数索引怎么创建和使用
    创建一个Oracle函数索引的语法如下: CREATE INDEX index_name ON table_name (functi...
    99+
    2024-03-13
    oracle
  • 怎样在php函数中创建数组
    在PHP中,数组是一个非常重要的数据结构,它能够存储多个值,这些值可以是不同的数据类型,如整数、字符串、对象等。创建数组是PHP的基础知识之一,本文将详细介绍在PHP函数中创建数组的方法和技巧。一、使用array()函数创建数组array(...
    99+
    2023-05-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作