【PB续命03】借用Oracle的编码解码续命

【PB续命02】感觉比较乱,整理一下,封装一个Oracle的包,把编码和解码放在一起,包名为BLM_ENCODE

1 包头

复制代码
create or replace package BLM_ENCODE is
/*
  -- Author  : GROMS
  -- Created : 2023-10-23 9:18:12
  -- Purpose : 编码与解码
  
  -- Public type declarations
  type <TypeName> is <Datatype>;
  
  -- Public constant declarations
  <ConstantName> constant <Datatype> := <Value>;

  -- Public variable declarations
  <VariableName> <Datatype>;

  -- Public function and procedure declarations
  function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;
 */
 
    --Base64 编码
    function base64_encode(plaintext varchar2 ) return varchar2;
 
    --Base64 解码
    function base64_decode(base64Encode varchar2 ) return varchar2;
    
    /* 
    --base64编码与解码 应用示例
    select blm_encode.base64_encode('blma5217') from dual
    --编码后结果:YmxtYTUyMTc=
    select blm_encode.base64_decode('YmxtYTUyMTc=') from dual
    --解码后结果:blma5217
    */
    
    
    --UrlEncode编码
    FUNCTION url_encode(urlString IN VARCHAR2) RETURN VARCHAR2;
    
    --UrlDecode解码
    FUNCTION url_decode(urlencode IN VARCHAR2) RETURN VARCHAR2;
    
    /* 
    --URL编码与解码 应用示例
    select blm_encode.url_encode('白龙马5217') from dual
    --编码后结果:%E7%99%BD%E9%BE%99%E9%A9%AC5217
    select blm_encode.url_decode('%E7%99%BD%E9%BE%99%E9%A9%AC5217') from dual
    --解码后结果:blma5217
    */

end BLM_ENCODE;

2 包体

复制代码
create or replace package body BLM_ENCODE is
/*
  -- Private type declarations
  type <TypeName> is <Datatype>;
  
  -- Private constant declarations
  <ConstantName> constant <Datatype> := <Value>;

  -- Private variable declarations
  <VariableName> <Datatype>;

  -- Function and procedure implementations
  function <FunctionName>(<Parameter> <Datatype>) return <Datatype> is
    <LocalVariable> <Datatype>;
  begin
    <Statement>;
    return(<Result>);
  end;


begin
  -- Initialization
  <Statement>;
*/

    --Base64 编码
    function base64_encode(plaintext varchar2 ) return varchar2
      as 
    begin
      return utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(plaintext)))  ;
    end;
    
    --Base64 解码
    function base64_decode(base64Encode varchar2 ) return varchar2
      as 
    begin
      return (utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw(base64Encode))))  ;
    end;
    
    --UrlEncode编码
    FUNCTION url_encode(urlString IN VARCHAR2) RETURN VARCHAR2 
       AS
    BEGIN--utl_url.escape()该方法只能在函数中调用
       RETURN utl_url.escape(urlString, TRUE, 'utf-8');
    END;
    
    --UrlDecode解码
    FUNCTION url_decode(urlencode IN VARCHAR2) RETURN VARCHAR2 
       AS
    BEGIN--utl_url.escape()该方法只能在函数中调用
       RETURN utl_url.unescape(urlencode, 'utf-8');
    END;
    
end BLM_ENCODE;
相关推荐
要做一个小太阳几秒前
数据库索引
运维·数据库
m0_737539371 分钟前
Redis安装与常用命令
数据库·redis·bootstrap
码农阿豪6 分钟前
时序数据库选型指南:我们是怎么评估和选型的
数据库·时序数据库
2301_796588508 分钟前
Go语言如何压缩文件_Go语言gzip压缩教程【基础】
jvm·数据库·python
m0_6178814210 分钟前
c++如何通过重定向rdbuf来捕获第三方库的日志输出到文件【详解】
jvm·数据库·python
IntMainJhy11 分钟前
【flutter for open harmony】第三方库Flutter 国际化多语言的鸿蒙化适配与实战指南
数据库·flutter·华为·sqlite·harmonyos
Greyson119 分钟前
mysql查询执行过程中如何追踪耗时_使用PROFILE分析指令周期
jvm·数据库·python
解救女汉子24 分钟前
CSS如何实现水平垂直居中效果_利用flex布局的justify-content与align-items
jvm·数据库·python
2301_7735536225 分钟前
CSS如何解决栅格重叠问题_使用Grid-area明确划分元素占位
jvm·数据库·python
看海的四叔27 分钟前
【SQL】SQL的日期与时间函数
数据库·hive·sql·数据分析·时间函数·日期函数