Base64與BLOB 轉換函式
Base64 介紹
Base64是一種基於64個可列印字元來表示二進位制資料的表示方法。由於2的6次方等於64,所以每6個為一個單元,對應某個可列印字元。三個有24個位元,對應於4個Base64單元,即3個位元組需要用4個可列印字元來表示。它可用來作為電子郵件的傳輸編碼。在Base64中的可列印字元包括字母A-Z、a-z、數字0-9,這樣共有62個字元,此外兩個可列印符號在不同的系統中而不同。一些如的其他編碼方法,和之後的版本使用不同的64字符集來代表6個二進位制數字,但是它們不叫Base64。
Base64常用於在通常處理文字資料的場合,表示、傳輸、儲存一些二進位制資料。包括MIME的email,email via MIME,在XML中儲存複雜資料.
Base64轉BLOB
CREATE OR REPLACE FUNCTION base64encode(p_blob IN BLOB)
RETURN CLOB
-- -----------------------------------------------------------------------------------
-- File Name :
-- Author : Tim Hall
-- Description : Encodes a BLOB into a Base64 CLOB.
-- Last Modified: 09/11/2011
-- -----------------------------------------------------------------------------------
IS
l_clob CLOB;
l_step PLS_INTEGER := 12000; -- make sure you set a multiple of 3 not higher than 24573
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;
/
BLOB轉base64
CREATE OR REPLACE FUNCTION base64decode(p_clob CLOB)
RETURN BLOB
-- -----------------------------------------------------------------------------------
-- File Name :
-- Author : Tim Hall
-- Description : Decodes a Base64 CLOB into a BLOB
-- Last Modified: 09/11/2011
-- -----------------------------------------------------------------------------------
IS
l_blob BLOB;
l_raw RAW(32767);
l_amt NUMBER := 7700;
l_offset NUMBER := 1;
l_temp VARCHAR2(32767);
BEGIN
BEGIN
DBMS_LOB.createtemporary (l_blob, FALSE, DBMS_LOB.CALL);
LOOP
DBMS_LOB.read(p_clob, l_amt, l_offset, l_temp);
l_offset := l_offset + l_amt;
l_raw := UTL_ENCODE.base64_decode(UTL_RAW.cast_to_raw(l_temp));
DBMS_LOB.append (l_blob, TO_BLOB(l_raw));
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
RETURN l_blob;
END;
/
轉自於:oracle-base
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15747463/viewspace-1147139/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CLOB與BLOB的轉換
- Oracle blob型別資料轉換成 base64編碼Oracle型別
- ORACLE單行函式與多行函式之五:轉換函式示例Oracle函式
- 轉換函式函式
- Oracle Blob 轉換為ClobOracle
- numtoyminterval函式——數字轉換函式函式
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別
- 類的轉換函式函式
- php轉換ip函式PHP函式
- js日期轉換函式JS函式
- 函式式 Java 到函式式 Kotlin 的轉換函式JavaKotlin
- oracle 10g函式大全--轉換函式Oracle 10g函式
- 函式組:TRUX 包含很多的轉換函式函式UX
- Blob實現與File DataURL canvas相互轉換示例詳解Canvas
- DB2日期與字串轉換函式DB2字串函式
- Oracle OCP(05):轉換函式Oracle函式
- 8.轉換文字函式函式
- 混沌 IN C++::轉換函式C++函式
- 索引ROWID轉換函式索引函式
- 轉換時間戳的函式時間戳函式
- oracle 全形半形轉換函式Oracle函式
- c++ operator typename 轉換函式C++函式
- 日期轉換為raw的函式函式
- string大小寫轉換函式函式
- SQL 數字轉換英文函式SQL函式
- php字串與字元替換函式PHP字串字元函式
- mysql和oracle字串編碼轉換函式,字串轉位元組函式例子MySqlOracle字串編碼函式
- 【複變函式與積分變換】02. 解析函式函式
- 初探JavaScript PDF blob轉換為Word docx方法JavaScript
- oracle內部轉換函式雜談Oracle函式
- GBK中文繁簡轉換函式函式
- MySQL字串函式 字串大小寫轉換MySql字串函式
- 浮點數轉換成字串函式字串函式
- oracle時間間隔轉換函式Oracle函式
- oracle中進位制轉換函式Oracle函式
- [轉]decode函式和行列互換函式
- to_char函式格式轉換參考函式
- 函式組:STXK(SAPscript 文字轉換)函式