【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;
相关推荐
Wang's Blog39 分钟前
Redis: 集群环境搭建,集群状态检查,分析主从日志,查看集群信息
数据库·redis
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO1 小时前
MySQL事务
数据库·mysql
cyt涛3 小时前
MyBatis 学习总结
数据库·sql·学习·mysql·mybatis·jdbc·lombok
Rookie也要加油3 小时前
01_SQLite
数据库·sqlite
liuxin334455663 小时前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
看山还是山,看水还是。4 小时前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec4 小时前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa4 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke4 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D4 小时前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa