Функция Oracle для возврата размера сгустка в мегабайтах - PullRequest
0 голосов
/ 12 августа 2010

У меня есть таблица, назовем ее вложениями.

У меня есть идентификатор вложения и данные файла вложения.Однако, к сожалению, когда файлы загружаются, размер файла никогда не помещается в поле размера файла ..... поэтому я немного затрудняюсь.

Есть ли способ, которым я мог бы сделатьзапрос для расчета размера.размер файла в мегабайтах и ​​б.чтобы получить общий размер всех файлов.

Кроме того, я также знаю, что если у меня будет огромное количество вложений, то это будет медленный запрос.Поэтому я буду кэшировать результат запроса в моем веб-приложении.(обновлять каждые 30 минут или около того через cron)

Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Для тех, кто заинтересован, я нашел решение:

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;

Я умножаю на два, потому что база данных, с которой я работаю, находится в utf-16.

И назвать это:

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

Все довольно просто на самом деле!: -)

1 голос
/ 12 августа 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...