在一个表中存放了俩个blob字段,想一个存文本,一个存声音文件,为什么建立时出错呢? 
我的程序,大家帮看看!!! 
create  table  peixun1_tab  (id varchar2(10) not null,wenben  BFILE ,sound  BFILE);  
create  table  peixun1  ( id varchar2(10) not null,wenben  BLOB, sound  BLOB);  
create  or  replace  directory  utllobdir  as  'f:';  
set  serveroutput  on 
以上建表没问题 
declare  
        wenben_blob    BLOB;  
        wenben_bfile  BFILE  :=  BFILENAME('UTLLOBDIR','1-1-1.txt'); 
        sound_blob  BLOB; 
        sound_bfile  BFILE :=BFILENAME('UTLLOBDIR','1-1-1.mp3'); 
          
  begin  
        insert  into  peixun1_tab  values  ('1-1-1',wenben_bfile,sound_bfile)  
            returning  wenben  into  wenben_bfile; 
            returning  sound   into  sound_bfile;  
        insert  into  peixun1  values  ('1-1-1',empty_blob(),empty_blob())  
            returning  wenben  into  wenben_blob; 
            returning  sound  into  sound_blob;  
        dbms_lob.fileopen(wenben_bfile);  
        dbms_lob.loadfromfile(wenben_blob,  wenben_bfile,  dbms_lob.getlength(wenben_bfile));  
        dbms_lob.fileclose(wenben_bfile); 
        dbms_lob.fileopen(sound_bfile);  
        dbms_lob.loadfromfile(sound_blob,  sound_bfile,  dbms_lob.getlength(sound_bfile));  
        dbms_lob.fileclose(sound_bfile);  
        commit;  
  end; 
出错信息: 
  returning  sound    into  sound_bfile; 
                * 
ERROR 位于第 10 行: 
ORA-06550: 第 10 行, 第 25 列: 
PLS-00103: 出现符号 "SOUND"在需要下列之一时: 
:=.(@%; 
ORA-06550: 第 13 行, 第 24 列: 
PLS-00103: 出现符号 "SOUND"在需要下列之一时: 
:=.(@%;  

解决方案 »

  1.   

    改成如下:
    create  or  replace  directory  UTLLOBDIR as  'c:\';  
    create  table  peixun1_tab  (id varchar2(10) not null,wenben  BFILE ,sound  BFILE);  
    create  table  peixun1  ( id varchar2(10) not null,wenben  BLOB, sound  BLOB);  DECLARE
      WENBEN_BLOB  BLOB;
      WENBEN_BFILE BFILE := BFILENAME('UTLLOBDIR', '1-1-1.txt');
      SOUND_BLOB   BLOB;
      SOUND_BFILE  BFILE := BFILENAME('UTLLOBDIR', '1-1-1.mp3');
    BEGIN
      INSERT INTO PEIXUN1_TAB
      VALUES
        ('1-1-1', WENBEN_BFILE, SOUND_BFILE) ;
       
      INSERT INTO PEIXUN1
      VALUES
        ('1-1-1', EMPTY_BLOB(), EMPTY_BLOB())
      RETURNING WENBEN, SOUND INTO WENBEN_BLOB, SOUND_BLOB;
      
      DBMS_LOB.FILEOPEN(WENBEN_BFILE);
      DBMS_LOB.LOADFROMFILE(WENBEN_BLOB,
                            WENBEN_BFILE,
                            DBMS_LOB.GETLENGTH(WENBEN_BFILE));
      DBMS_LOB.FILECLOSE(WENBEN_BFILE);
      
      DBMS_LOB.FILEOPEN(SOUND_BFILE);
      DBMS_LOB.LOADFROMFILE(SOUND_BLOB,
                            SOUND_BFILE,
                            DBMS_LOB.GETLENGTH(SOUND_BFILE));
      DBMS_LOB.FILECLOSE(SOUND_BFILE);
      COMMIT;
    END;
    /