ck播放器做解析网站,黑龙江网站建设,网站的建设包括以下几个阶段,名片式网站模板因为 dbms_obfuscation_toolkit.md5 是一个 Oracle 不推荐继续使用的函数#xff0c;所以 OceanBase 没有对其兼容#xff0c;取而代之的是兼容了 dbms_crypto.hash#xff0c;其用法详见这篇 KB
但是#xff0c;并不是所有业务都接受修改源码#xff0c;因为复杂系统里所以 OceanBase 没有对其兼容取而代之的是兼容了 dbms_crypto.hash其用法详见这篇 KB
但是并不是所有业务都接受修改源码因为复杂系统里涉及到的修改点可能无法枚举。
这里提供一种临时解决方案使用 OceanBase PL/SQL 实现一个 dbms_obfuscation_toolkit.md5 系统包源码如下
## 创建包 DBMS_OBFUSCATION_TOOLKIT
CREATE OR REPLACE PACKAGE DBMS_OBFUSCATION_TOOLKITISFUNCTION MD5(input_string VARCHAR2)RETURN varchar2;END DBMS_OBFUSCATION_TOOLKIT;
/## 创建包体 DBMS_OBFUSCATION_TOOLKIT
CREATE OR REPLACE PACKAGE BODY DBMS_OBFUSCATION_TOOLKITIS FUNCTION MD5(input_string VARCHAR2)RETURN varchar2IS BEGINRETURN UTL_RAW.CAST_TO_VARCHAR2(dbms_crypto.hash(utl_raw.cast_to_raw(input_string), 2));END MD5;
END DBMS_OBFUSCATION_TOOLKIT;
/测试效果如下
OceanBase(TESTTEST)SELECT rawtohex(dbms_crypto.hash(utl_raw.cast_to_raw(hello world),2 /*dbms_crypto.HASH_MD5*/)) md5 FROM dual;
----------------------------------
| MD5 |
----------------------------------
| 5EB63BBBE01EEED093CB22BB8F5ACDC3 |
----------------------------------
1 row in set (0.000 sec)OceanBase(TESTTEST)SELECT utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string hello world)) md5 FROM dual;
----------------------------------
| MD5 |
----------------------------------
| 5EB63BBBE01EEED093CB22BB8F5ACDC3 |
----------------------------------
1 row in set (0.039 sec)可见上述 PL 代码完全实现了相关功能。
这个思路可以延伸到很多缺 PL 包的场景我们很多时候可以使用自定义的 PL 包来模拟缺失的内容。当然这个主要集中在计算领域如果是要做一些网络 IO就麻烦很多比如 HTTP 相关的包就很难模拟。