怎么在存储过程中传入大于32k的ftBlob参数?

sean2000 2003-06-25 01:09:17
碰到一个问题,我用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;
...全文
223 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sean2000 2003-07-08
  • 打赏
  • 举报
回复
还有谁比较了解的希望能够谈一下
sean2000 2003-06-26
  • 打赏
  • 举报
回复
jiezhi(浪子) :
您好!你的意思是不是先将图片保存到BLOB字段,再通过后台程序,将此BLOB转化成外部文件,完成之后再将此BLOB删除?
这样相当于操作两步了,不知会不会影响速度,最好一次能够成功,因为我数据量比较大,对存储的速度要求比较高。
jiezhi 2003-06-26
  • 打赏
  • 举报
回复
圖片之類的只是附屬信息。
當然是讓用戶選擇圖片后保存到數據庫的。
而不是把圖片當做參數。
使用delphi的LoadFromFile
karen 2003-06-26
  • 打赏
  • 举报
回复
我的做法是:先保存其他信息,在更新着条记录中的Blob字段.
sean2000 2003-06-26
  • 打赏
  • 举报
回复
jiezhi(浪子):
您好!我现在是将图片文件存储为BFile类型的外部文件,存为外部文件我已经解决了,小于32k的文件流作为参数,也是成功的。就是大于32k的文件流不支持。
如果不把文件流作为参数,那我怎么传入后台存储过程呢?
我没有用BDE,我是用ADO,并且我用BDE试验了一下,将Blob参数改大了,但结果一样。
有什么办法呢?
jiezhi 2003-06-25
  • 打赏
  • 举报
回复
另外設置bde里面blob的參數。
jiezhi 2003-06-25
  • 打赏
  • 举报
回复
不要把圖片作為參數。
Michaelyfj 2003-06-25
  • 打赏
  • 举报
回复
用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
sean2000 2003-06-25
  • 打赏
  • 举报
回复
Michaelyfj(星星还是那颗星星) :
请问ParambyName('V_BLOB')的大小在哪里设置,如果是size的话,已经设置为最大值2147483647,还是不行。
Michaelyfj 2003-06-25
  • 打赏
  • 举报
回复
设置ParambyName('V_BLOB')的大小大于32K

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧