在使用存储过程往oracle数据库的blob字段写入二进制数据的时候,弹出错误“ORA-01460: 转换请求无法实现或不合理”,在网上找到的解决方案是,先往blob插入empty_blob(),然后update字段,把值写入进去,请问这种方法的作用是什么?引起那个问题的原因是什么?有没有更好的办法解决这个问题!请高手解答下

解决方案 »

  1.   

    --我有个收藏,参考这个
    CREATE TABLE image(NAME VARCHAR2(100),DATA BLOB); DECLARE 
      LOB_LOC  BLOB; 
      SRC_FILE BFILE; 
      DST_FILE BLOB; 
      LGH_FILE BINARY_INTEGER; 
    BEGIN 
      INSERT INTO IMAGE 
      VALUES 
        ('my_1.png', EMPTY_BLOB()) 
      RETURNING DATA INTO LOB_LOC;   SRC_FILE := BFILENAME('DDD', 'my.png');   SELECT DATA INTO DST_FILE FROM IMAGE WHERE NAME = 'my_1.png' FOR UPDATE;   DBMS_LOB.FILEOPEN(SRC_FILE, DBMS_LOB.FILE_READONLY); 
      LGH_FILE := DBMS_LOB.GETLENGTH(SRC_FILE); 
      DBMS_LOB.LOADFROMFILE(DST_FILE, SRC_FILE, LGH_FILE);   UPDATE IMAGE SET DATA = DST_FILE WHERE NAME = 'my_1.png';   DBMS_LOB.FILECLOSE(SRC_FILE); 
      COMMIT; 
    END;