你的数据库所在的电脑有c:\lob.txt文件吗?

解决方案 »

  1.   

    我按照你的步骤试验了一下没有问题:
    SQL> create table man(map blob);表已创建。SQL> create or replace directory FILEDIR as 'C:\'
      2  ;目录已创建。SQL> declare
      2    a_blob  BLOB;
      3  a_bfile BFILE:=BFILENAME('FILEDIR','lob.txt');
      4  begin
      5    insert into man(map) values (empty_blob()) returning map into a_blob;
      6    dbms_lob.fileopen(a_bfile);
      7    dbms_lob.loadfromfile(a_blob, a_bfile, dbms_lob.getlength(a_bfile));
      8    dbms_lob.fileclose(a_bfile);
      9    commit;
     10  end;
     11  /PL/SQL 过程已成功完成。SQL> select dbms_lob.getlength(map) from man;DBMS_LOB.GETLENGTH(MAP)
    -----------------------
                        237已选择 1 行。---------------------------------------------奇怪?..........
      

  2.   

    >create or replace directory FILEDIR as 'C:\'
    是不是这行没有“;”,没有建立这个目录,所以没找到文件?
      

  3.   

    create or replace directory FILEDIR as 'C:\'
    这样目录就创建成功了
    但是可能因为在C:\下没有那个lob文件,所以才会打不开