oracle中blob转换,BLOB转换为CLOB的函数(oracle中执行)
BLOB轉換為CLOB的函數(oracle中執行)
CREATE OR REPLACE FUNCTION BlobToClob(blob_in IN BLOB) RETURN CLOB AS
v_clobCLOB;
v_varchar VARCHAR2(32767);
v_startPLS_INTEGER := 1;
v_bufferPLS_INTEGER := 32767;
BEGIN
DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);
FOR i IN 1 .. CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer) LOOP
v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in,
v_buffer,
v_start));
DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar);
DBMS_OUTPUT.PUT_LINE(v_varchar);
v_start := v_start + v_buffer;
END LOOP;
RETURN v_clob;
END BlobToClob;
一、BLOB和CLOB的區別
1.BLOB使用二進制保存數據,CLOB使用CHAR來保存數據。
2.CLOB,NCLOB,BLOB都是內部的LOB(Large Object)類型,最長4G,要保存圖片、文本文件、Word文件最好使用BLOB類型。
二、常用操作:
Get()方法:
CLOB:
//獲得數據庫連接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement stmt = con.createStatement();
//不需要“for update”
ResultSet rs = stmt.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next())
{
java.sql.Clob clob = rs.getClob("CLOBATTR");
Reader inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()];
inStream.read(c);
//data是讀出并需要返回的數據,類型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
BLOB:
//獲得數據庫連接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");
if (rs.next())
{
java.sql.Blob blob = rs.getBlob("BLOBATTR");
InputStream inStream = blob.getBinaryStream();
//data是讀出并需要返回的數據,類型是byte[]
data = new byte[input.available()];
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
總結
以上是生活随笔為你收集整理的oracle中blob转换,BLOB转换为CLOB的函数(oracle中执行)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NET Core微服务之路:让我们对上一
- 下一篇: 李洋疯狂C语言之break和contin