2010-08-12 27 views
0

我有一张表,我们称它为附件。Oracle函数以兆字节返回clob的大小

我有一个附件id和附件filedata。然而,不幸的是,当文件上传时,文件的大小永远不会放入文件大小的字段.....所以我有一点困难。

有没有一种方法,我可以做一个查询来计算的大小。以兆字节为单位的文件大小和b。获取所有文件的总大小。

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

任何帮助将非常感激。

谢谢!

回答

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 

所有,而其实很简单! :-)