PL/SQL块定义部分--LOB类型(二)

2014-11-24 12:27:26 · 作者: · 浏览: 2
NTO BFILE_TABLE(id) VALUES(1);
UPDATE BFILE_TABLE SET remark=BFILENAME('SCOTTDIR ','1.txt') ;
INSERT INTO BFILE_TABLE(id,remark) VALUES(2,BFILENAME(' SCOTTDIR ','2.doc') );
注意:BFILE数据类型指向的文件,即可以是文本文件也可以是二进制文件。而且BFILE数据类型不能通过SELECT语句直接查看其内容。
示例3:将BFile文件的内容读取到CLOB列(前提是BFile文件是文本文件)
DECLARE
src BFILE;
des CLOB;
amount INT;
src_offset INT :=1;
des_offset INT :=1;
csid INT :=850;
lc INT :=0;
warning INT;
BEGIN
SELECT remark INTO src FROM BFile_TABLE WHERE id=1;
SELECT remark INTO des FROM CLOB_TABLE WHERE id=1 FOR UPDATE ;
DBMS_LOB.FILEOPEN(src,DBMS_LOB.FILE_READONLY);
amount:=DBMS_LOB.GETLENGTH(src);
DBMS_OUTPUT.PUT_LINE(amount);
DBMS_LOB.LOADCLOBFROMFILE (des,src,amount,des_offset,src_offset,csid,lc,warning);
DBMS_LOB.CLOSE(src);
END;
四、使用BLOB数据类型
示例1:创建带有BLOB列的表并插入数据
CREATE TABLE BLOB_TABLE
(
id NUMBER(3),
remark BLOB
);
INSERT INTO BLOB_TABLE VALUES(1,EMPTY_BLOB());
将文件内容插入到BLOB列:
DECLARE
src BFILE;
des BLOB;
amount INT;
src_offset INT :=1;
des_offset INT :=1;
csid INT :=0;
lc INT :=0;
warning INT;
BEGIN
src:=BFILENAME('SCOTTDIR','1.txt');
SELECT remark INTO des FROM BLOB_TABLE WHERE id=1 FOR UPDATE;
DBMS_LOB.FILEOPEN(src,DBMS_LOB.FILE_READONLY);
amount:=DBMS_LOB.GETLENGTH(src);
DBMS_OUTPUT.PUT_LINE(amount);
--DBMS_LOB.LOADBLOBFROMFILE (des,src,amount,des_offset,src_offset);
DBMS_LOB.CLOSE(src);
END;