oracle clog读取 php,oracle BLOG图片和CLOG base64码的转换

--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;

/

--图片转BASE64

CREATE OR REPLACE FUNCTION ENCODE_BASE64(P_BLOB IN BLOB)

RETURN CLOB

IS

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;

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值