加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle BLOG图片和CLOG base64码的转换

发布时间:2020-12-12 13:12:43 所属栏目:百科 来源:网络整理
导读:--BASE64转图片 CREATE OR REPLACE FUNCTION DECODE_BASE64(P_CLOB_IN IN CLOB) RETURN BLOB IS V_BLOB BLOB; V_OFFSET INTEGER; V_TEM_CLOB CLOB; V_BUFFER_VARCHAR VARCHAR2(32000); V_BUFFER_RAW RAW(32000); V_BUFFER_SIZE BINARY_INTEGER := 32000; BEG

--BASE64转图片
CREATE OR REPLACE FUNCTION DECODE_BASE64(P_CLOB_IN IN CLOB) RETURN BLOB IS
V_BLOB BLOB;
V_OFFSET INTEGER;
V_TEM_CLOB CLOB;
V_BUFFER_VARCHAR VARCHAR2(32000);
V_BUFFER_RAW RAW(32000);
V_BUFFER_SIZE BINARY_INTEGER := 32000;

BEGIN

IF P_CLOB_IN IS NULL THEN
RETURN NULL;
END IF;

DBMS_LOB.CREATETEMPORARY(V_BLOB,TRUE);

V_OFFSET := 1;
FOR I IN 1 .. CEIL(DBMS_LOB.GETLENGTH(P_CLOB_IN) / V_BUFFER_SIZE) LOOP
DBMS_LOB.READ(P_CLOB_IN,V_BUFFER_SIZE,V_OFFSET,V_BUFFER_VARCHAR);
V_BUFFER_RAW := UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW(V_BUFFER_VARCHAR));
DBMS_LOB.WRITEAPPEND(V_BLOB,
UTL_RAW.LENGTH(V_BUFFER_RAW),
V_BUFFER_RAW);
V_OFFSET := I*V_BUFFER_SIZE+1;
END LOOP;
RETURN V_BLOB;

END DECODE_BASE64;
/


--图片转BASE64CREATE OR REPLACE FUNCTION ENCODE_BASE64(P_BLOB IN BLOB) RETURN CLOBIS L_CLOB CLOB; L_STEP PLS_INTEGER := 12000;BEGIN FOR I IN 0 .. TRUNC((DBMS_LOB.GETLENGTH(P_BLOB) - 1 )/L_STEP) LOOP L_CLOB := L_CLOB || UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(DBMS_LOB.SUBSTR(P_BLOB,L_STEP,I * L_STEP + 1))); END LOOP; RETURN L_CLOB;END;/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读