BLOB转换为CLOB的函数(oracle中执行)

本文介绍了一个用于将BLOB数据类型转换为CLOB数据类型的Oracle函数,并提供了具体的实现代码。此外还对比了BLOB与CLOB的区别,以及如何在Java中获取这两种类型的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BLOB转换为CLOB的函数(oracle中执行)

CREATE OR REPLACE FUNCTION BlobToClob(blob_in IN BLOB) RETURN CLOB AS

v_clob CLOB;

v_varchar VARCHAR2(32767);

v_start PLS_INTEGER := 1;

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

一、 BLOBCLOB的区别

1. BLOB使用二进制保存数据,CLOB使用CHAR来保存数据。

2. CLOBNCLOBBLOB都是内部的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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值