存完后,表中 fname(BFILE)这项的数值竟是 <VALUE ERROR>,.这是正常的数值吗?
具体的:(大家看看我错在那里。在客户端使用PL\SQL)
1、 create or replace directory ding_dir as 'd:\mytry'; ——在我电脑D盘新建文件夹mytry,存放1.jpg
2、 create table ding_bfiletest(ID number(8),fname blob);
create table ding_BLOBTEST(ID number(8),blobname blob);
3、 INSERT INTO ding_bfiletest VALUES (1, BFILENAME ('ding_dir', '1.jpg'));
4、读取bfile ,我编了个过程ding_bfile_blob_test
create or replace procedure ding_bfile_blob_test(tid in number, filename in varchar2, filedir in varchar2,upmessage out varchar2) is
blob_loc BLOB;
bfile_loc BFILE;
begin
INSERT INTO ding_BLOBTEST(ID,blobname) VALUES(TID,EMPTY_BLOB()) RETURN blobname INTO blob_LOC;
bfile_loc := BFILENAME(filedir,filename);
/* 假如bfile文件实际存在 */
IF (DBMS_LOB.FILEEXISTS(bfile_loc) != 0) THEN
/* 打开bfile源文件 */
DBMS_LOB.OPEN(bfile_loc, DBMS_LOB.LOB_READONLY);
/* 打开目标blob: */
DBMS_LOB.OPEN(blob_loc, DBMS_LOB.LOB_READWRITE);
/*从文件中装入 */
DBMS_LOB.LOADFROMFILE(blob_loc, bfile_loc,DBMS_LOB.GETLENGTH(bfile_loc));
/* 记得关闭: */
DBMS_LOB.CLOSE(blob_loc);
DBMS_LOB.CLOSE(bfile_loc);
COMMIT;
upmessage := '0';
END IF;
EXCEPTION WHEN OTHERS THEN ROLLBACK;
upmessage := '操作失败';
end ding_bfile_blob_test;
我要问的两点:
①执行3后,查看ding_bfiletest,表中 fname(BFILE)这项的数值竟是 <VALUE ERROR>,.这是正常的数值吗?
②测试函数过程,总显示'操作失败'?
为什么呢?为什么呢?
为什么呢?
为什么呢?
为什么呢?
------解决方案--------------------
注意要大写
INSERT INTO ding_bfiletest VALUES (1, BFILENAME ('DING_DIR', '1.jpg'));