在Oracle中对Blob类型的写操作的例子
2007-05-17 13:41
309 查看
SET SERVEROUTPUT ON
DECLARE
vs_str VARCHAR2(100);
vb_blob BLOB;
buff RAW(32000);
buffer_size INTEGER:=0;
--追加
vr_temp_raw RAW(1024);
vn_temp_raw_length INTEGER;
vs_from_str IN VARCHAR2;
vn_temp NUMBER(10);
vn_from_number IN NUMBER;
BEGIN
--必须先插入一个空的blob
INSERT INTO test_blob_t(f_name,f_blob) VALUES('zhang',empty_blob());
SELECT f_blob INTO vb_blob FROM test_blob_t WHERE f_name = 'zhang' FOR UPDATE;
--1、写字符串进blob,从第一个位置开始
--将字符串写入raw中
buff := UTL_RAW.CAST_TO_RAW(vs_str);
buffer_size := UTL_RAW.length(buff);
DBMS_OUTPUT.put_line(buffer_size);
--将raw中的数据从偏移量1开始,buffer_size个字节的数据写到blob中
DBMS_LOB.write(vb_blob,buffer_size,1,buff);
--2、追加字符串到blob中
--将字符串写入raw中
vr_temp_raw := UTL_RAW.CAST_TO_RAW(vs_from_str);
vn_temp_raw_length := UTL_RAW.length(vr_temp_raw);
--将raw中的内容追加到blob中,默认从上次blob的结束位置,写入vn_temp_raw_length个字节
DBMS_LOB.writeappend(ib_to_blob,vn_temp_raw_length,vr_temp_raw);
--3、追加数值到blob中
--转换成十六进制
vn_temp := LPAD(RTRIM(LTRIM(TO_CHAR(vn_from_number,'xxxxxxxx'))),8,'0');
--将十六进制的数据写入raw中
vr_temp_raw := HEXTORAW(vn_temp);
vn_temp_raw_length := UTL_RAW.length(vr_temp_raw);
--将raw中的内容追加到blob中,默认从上次blob的结束位置,写入vn_temp_raw_length个字节
DBMS_LOB.writeappend(ib_to_blob,vn_temp_raw_length,vr_temp_raw);
END;
/
相关文章推荐
- 在Oracle中对Blob类型的读操作的例子
- oracle对大对象类型操作:blob,clob,nclob
- oracle对大对象类型操作:blob,clob,nclob,bfile
- 利用JDBC操作Oracle CLOB和BLOB类型数据
- 【转】oracle对大对象类型操作:blob,clob,nclob,bfile
- 使用JDBC4.0操作Oracle中BLOB类型的数据方法
- oracle blob数据类型存储读取的小例子
- java 操作oracle的blob类型数据
- JDBC 对oracle 的clob ,blob类型的操作方式
- 使用java JDBC方式操作oracle blob类型数据
- 学习操作oracle.sql.Blob数据类型,向数据库插入Blob数据类型的数据
- 使用JDBC4.0操作Oracle中BLOB类型的数据方法
- 【转】oracle对BLOB类型数据的操作与性能问题
- oracle对BLOB类型数据的操作与性能问题
- 操作Oracle类型CLOB和BLOB
- oracle对BLOB类型数据的操作与性能问题
- Hibernate操作Blob类型字段出现java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getBlob(Ljava/lang/String;)Ljava/sql/
- java操作Oracle大数据类型BLOB的存取
- (转)通过JDBC 操作 ORACLE BLOB,CLOB字段类型
- 使用java JDBC方式操作oracle blob类型数据