碰到一个问题,我用ADOStoredProc,参数类型为FTBLOB, 
传入小于32k的二进制流,没有问题,但只要大于32k,就报错: 
“ORA-01460 :转换请求无法实现或不合理”
请问是什么问题?
调用方法如下:
var
  MS : TMemoryStream;
begin
  MS := TMemoryStream.Create;
  MS.LoadFromFile('d:\temp.tif');
  ADOStoredProc1.Parameters.ParamByName('V_BLOB').LoadFromStream(MS,ftBlob);
  ADOStoredProc1.Prepared;
  ADOStoredProc1.ExecProc;
end;

解决方案 »

  1.   

    设置ParambyName('V_BLOB')的大小大于32K
      

  2.   

    Michaelyfj(星星还是那颗星星) :
      请问ParambyName('V_BLOB')的大小在哪里设置,如果是size的话,已经设置为最大值2147483647,还是不行。
      

  3.   

    用BLOB来存储图片有很多问题,读取也很麻烦,你还是把BLOB改为Long raw类型吧错误信息参考如下:
    ORA-01460: unimplemented or unreasonable conversion requested 
    Cause: The requested format conversion is not supported. Action: Remove the requested conversion from the SQL statement. Check the syntax for the TO_CHAR, TO_DATE, and TO_NUMBER functions to see which conversions are supported
      

  4.   

    jiezhi(浪子):
       您好!我现在是将图片文件存储为BFile类型的外部文件,存为外部文件我已经解决了,小于32k的文件流作为参数,也是成功的。就是大于32k的文件流不支持。
       如果不把文件流作为参数,那我怎么传入后台存储过程呢?
       我没有用BDE,我是用ADO,并且我用BDE试验了一下,将Blob参数改大了,但结果一样。
       有什么办法呢?
      

  5.   

    我的做法是:先保存其他信息,在更新着条记录中的Blob字段.
      

  6.   

    圖片之類的只是附屬信息。
    當然是讓用戶選擇圖片后保存到數據庫的。
    而不是把圖片當做參數。
    使用delphi的LoadFromFile
      

  7.   

    jiezhi(浪子) :
        您好!你的意思是不是先将图片保存到BLOB字段,再通过后台程序,将此BLOB转化成外部文件,完成之后再将此BLOB删除?
        这样相当于操作两步了,不知会不会影响速度,最好一次能够成功,因为我数据量比较大,对存储的速度要求比较高。