PHP code: CREATE OR REPLACE FUNCTION mob_getbase64String( P_blob BLOB ) RETURN CLOB IS l_result CLOB; BEGIN DBMS_LOB.createtemporary(lob_loc => l_result, CACHE => FALSE, dur => 0); Wf_Mail_Util.EncodeBLOB ( P_blob , l_result ); <font color="red">这句话的目的是什么的?[/COLOR] RETURN ( l_result ); END mob_getbase64String;
CREATE OR REPLACE FUNCTION mob_getbase64String( P_blob BLOB ) RETURN CLOB IS l_result CLOB; BEGIN DBMS_LOB.createtemporary(lob_loc => l_result, CACHE => FALSE, dur => 0); Wf_Mail_Util.EncodeBLOB ( P_blob , l_result ); <font color="red">这句话的目的是什么的?[/COLOR] RETURN ( l_result ); END mob_getbase64String;
PHP code: -- EncodeBLOB -- Receives a BLOB input and encodes it to Base64 CLOB -- IN -- BLOB data -- OUT -- CLOB data CREATE OR REPLACE PROCEDURE EncodeBLOB(pIDoc in blob, pODoc in out nocopy clob) is rawData raw(32767); chunksize integer; amount binary_integer := 32767; position integer := 1; base64raw RAW(32767); chunkcount binary_integer := 0; cBuffer varchar2(32000); lang varchar2(50) := userenv('LANGUAGE'); begin chunksize := 12288; amount := dbms_lob.getLength(pIDoc); if(chunksize < amount) then chunkcount := round((amount / chunksize)+0.5); else chunkCount := 1; end if; for i in 1..chunkcount loop dbms_lob.read(pIDoc, chunksize, position, rawData); base64raw := utl_encode.base64_encode(rawData); cBuffer := utl_raw.cast_to_varchar2(base64Raw); dbms_lob.writeAppend(pODoc, length(cBuffer), cBuffer); position := position + chunksize; end loop; dbms_lob.WriteAppend(pODoc, 1, convert(chr(10),substr(lang, instr(lang,'.') + 1), 'US7ASCII')); exception when others then null; --wf_core.context('WF_MAIL_UTIL', 'EncodeBLOB'); raise; end EncodeBLOB; /
-- EncodeBLOB -- Receives a BLOB input and encodes it to Base64 CLOB -- IN -- BLOB data -- OUT -- CLOB data CREATE OR REPLACE PROCEDURE EncodeBLOB(pIDoc in blob, pODoc in out nocopy clob) is rawData raw(32767); chunksize integer; amount binary_integer := 32767; position integer := 1; base64raw RAW(32767); chunkcount binary_integer := 0; cBuffer varchar2(32000); lang varchar2(50) := userenv('LANGUAGE'); begin chunksize := 12288; amount := dbms_lob.getLength(pIDoc); if(chunksize < amount) then chunkcount := round((amount / chunksize)+0.5); else chunkCount := 1; end if; for i in 1..chunkcount loop dbms_lob.read(pIDoc, chunksize, position, rawData); base64raw := utl_encode.base64_encode(rawData); cBuffer := utl_raw.cast_to_varchar2(base64Raw); dbms_lob.writeAppend(pODoc, length(cBuffer), cBuffer); position := position + chunksize; end loop; dbms_lob.WriteAppend(pODoc, 1, convert(chr(10),substr(lang, instr(lang,'.') + 1), 'US7ASCII')); exception when others then null; --wf_core.context('WF_MAIL_UTIL', 'EncodeBLOB'); raise; end EncodeBLOB; /
PHP code: CREATE OR REPLACE FUNCTION mob_getbase64String( P_blob BLOB ) RETURN CLOB IS l_result CLOB; BEGIN DBMS_LOB.createtemporary(lob_loc => l_result, CACHE => FALSE, dur => 0); EncodeBLOB ( P_blob , l_result ); RETURN ( l_result ); END mob_getbase64String; /
CREATE OR REPLACE FUNCTION mob_getbase64String( P_blob BLOB ) RETURN CLOB IS l_result CLOB; BEGIN DBMS_LOB.createtemporary(lob_loc => l_result, CACHE => FALSE, dur => 0); EncodeBLOB ( P_blob , l_result ); RETURN ( l_result ); END mob_getbase64String; /