2010-08-12 7 views
0

J'ai une table, appelons-la pièces jointes. J'ai un identifiant de pièce jointe et la pièce jointe. Cependant, malheureusement, lorsque les fichiers sont téléchargés, la taille du fichier n'est jamais placé dans un champ de taille de fichier ..... donc j'ai un peu d'une situation difficile.Fonction Oracle pour retourner la taille d'un clob en mégaoctets

Y at-il un moyen que je pourrais faire une requête pour calculer la taille d'un. une taille de fichiers en mégaoctets et b. pour obtenir la taille totale de tous les fichiers. En outre, je suis également conscient que si j'ai un grand nombre de pièces jointes, ce serait une requête lente. Je vais donc mettre en cache le résultat de la requête dans ma webapp. (rafraîchir toutes les 30 minutes environ par l'intermédiaire d'un cron)

Toute aide serait grandement appréciée.

Merci!

Répondre

2

Pour les intéressés, j'ai trouvé la solution:

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; 

Je suis par deux parce que la multiplication de la base de données avec lesquelles je travaille est en utf-16.

Et pour l'appeler:

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

Tout plutôt simple, vraiment! :-)

Questions connexes