您的位置:首页 > 数据库 > Oracle

在Oracle中对Blob类型的读操作的例子

2007-05-17 13:39 281 查看

SET SERVEROUTPUT ON


DECLARE


vs_temp VARCHAR2(200);


vr_raw RAW(32000);


vb_blob BLOB;


vn_blob_length INTEGER;


vn_temp NUMBER(3);


--vn_temp number;


in_blob_length INTEGER;--要读取的字节数


in_offset NUMBER(3);--偏移量


ib_byte NUMBER;


BEGIN


SELECT tblob INTO vb_blob FROM test_blob WHERE name = 'zhang' FOR UPDATE;




--将blob类型的数据读入raw类型变量中


--vn_blob_length := dbms_lob.getlength(vb_blob);


--Dbms_Output.put_line('vn_blob_length='||vn_blob_length);


--dbms_lob.read(vb_blob,vn_blob_length,1,vr_raw);


--Dbms_Output.put_line('vs_temp='||vs_temp);




--1)字符串


in_blob_length := 3;


in_offset := 1;


--从偏移量为in_offset的位置,读in_blob_length字节的数据进入vr_raw中


DBMS_LOB.read(vb_blob,in_blob_length,in_offset,vr_raw);


--将raw类型变量转成varchar型


vs_temp := UTL_RAW.CAST_TO_VARCHAR2(vr_raw);


DBMS_OUTPUT.put_line('vs_temp='||vs_temp);


DBMS_OUTPUT.put_line(LENGTH(vs_temp));




--2)4个字节整数


in_blob_length := 4;


in_offset := 4;


DBMS_LOB.read(vb_blob,in_blob_length,in_offset,vr_raw);


--将raw类型变量转成number型


vn_temp := UTL_RAW.cast_to_binary_integer(vr_raw);


DBMS_OUTPUT.put_line('vn_temp='||vn_temp);


DBMS_OUTPUT.put_line(LENGTH(vn_temp));




--3.一个字节整数


in_blob_length := 1;


in_offset := 8;


DBMS_LOB.read(vb_blob,in_blob_length,in_offset,vr_raw);


vs_temp := UTL_RAW.CAST_TO_VARCHAR2(vr_raw);


DBMS_OUTPUT.put_line('vs_temp='||vs_temp);


DBMS_OUTPUT.put_line(LENGTH(vs_temp));


--对于'0'会输出48 ,上面的转换则会输出'0'


--ib_byte := utl_raw.cast_to_binary_integer(vr_raw);


--Dbms_Output.put_line('ib_byte='||ib_byte);


--Dbms_Output.put_line(length(ib_byte));




--blob的长度


DBMS_OUTPUT.put_line('=='||DBMS_LOB.getlength(dst_file));




COMMIT;


END;


/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: