建表:
   CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);建目录:
   CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\Oracle';建过程:
CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS
  F_LOB BFILE;
  B_LOB BLOB;
BEGIN
  INSERT INTO IMAGE_LOB (T_ID, T_IMAGE) 
    VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
  F_LOB:= BFILENAME ('IMAGES', FILENAME);
  DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
  DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
  DBMS_LOB.GETLENGTH (F_LOB));
  DBMS_LOB.FILECLOSE (F_LOB);
  COMMIT;
END;

解决方案 »

  1.   

    grant create any directory to scott;
    grant create any library to scott;
    create or replace directory utllobdir as 'G:\oracle';
    create table bfile_tab (bfile_column BFILE);
    create table utl_lob_test (blob_column BLOB);set serveroutput on然后执行下面语句就将G:\oracle目录下的Azul.jpg存入到utl_lob_test 
    表中的blob_column字段中了。
    declare
       a_blob  BLOB;
       a_bfile BFILE := BFILENAME('UTLLOBDIR','Azul.jpg'); 
    begin
       insert into bfile_tab values (a_bfile)
         returning bfile_column into a_bfile;
       insert into utl_lob_test values (empty_blob())
         returning blob_column into a_blob;
       dbms_lob.fileopen(a_bfile);
       dbms_lob.loadfromfile(a_blob, a_bfile, dbms_lob.getlength(a_bfile));
       dbms_lob.fileclose(a_bfile);
       commit;
    end;
    /
    select dbms_lob.getlength(blob_column) from UTL_LOB_TEST;
      

  2.   

    为什么到这步提示出错啊dbms_lob.fileopen(a_bfile);
    ORA-22288:文件或LOB操作FILEOPEN失败
    系统找不到指定的文件