Oracle函数以兆字节为单位返回clob的大小

时间:2010-08-12 11:25:06

标签: sql database oracle

我有一张桌子,我们称之为附件。

我有附件ID和附件filedata。但是,遗憾的是,当文件上传时,文件的大小永远不会放入文件大小的字段中.....所以我有点困境。

有没有办法可以进行查询来计算a的大小。文件大小(兆字节)和b。获取所有文件的总大小。

此外,我也知道,如果我有大量的附件,那么这将是一个缓慢的查询。所以我将在我的webapp中缓存查询结果。 (通过cron每隔30分左右刷新一次)

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

对于那些感兴趣的人,我找到了解决方案:

create or replace function filesize_in_mb(filedata in blob) return float is
  Result float;
begin
  select ROUND(((dbms_lob.getlength(filedata)/1024/1024) * 2), 2)
  into Result
  from dual;
  return Result;
end filesize_in_mb;

我乘以2因为我正在使用的数据库是在utf-16中。

并称之为:

SELECT filesize_in_mb(a.filedata) as filesize FROM file_attachment a

真的很简单! : - )

答案 1 :(得分:1)