Oracle Apex - я должен использовать Empty_BLOB () или ноль? - PullRequest
0 голосов
/ 11 мая 2018

В настоящее время я использую Oracle Apex 5.1.2.

Я создал таблицу в базе данных, которая содержит столбец, который может содержать тип данных BLOB, столбец для имени файла и столбец для типа MIME.

В моем приложении APEX есть элемент страницы просмотра файлов.Цель этого элемента страницы - позволить конечному пользователю прикрепить файл к странице.Эта часть работает отлично - пользователь может найти файл с помощью этого элемента и прикрепить его к странице, а затем загрузить файл для его просмотра.

Проблема: я хочу, чтобы конечный пользовательбыть в состоянии удалить вложение, если им нужно, и, если они хотят, прикрепить другой файл на его место.Моя идея состоит в том, чтобы создать кнопку и в настройках для кнопки установить действие «Отправить страницу» и действие базы данных в действие обновления SQL.Затем я создам процесс страницы типа PL / SQL-код и задаю условие на стороне сервера в настройках процесса, который будет происходить при нажатии кнопки, которую я создал.В разделе кода PL / SQL этого процесса, как видно из проведенного мной исследования, у меня есть один из двух вариантов:

UPDATE table_name
SET blob_column = EMPTY_BLOB()
WHERE my_id = id

ИЛИ:

UPDATE table_name
SET blob_column = null
WHERE my_id = id

У меня уже естьпробовал оба этих варианта, и они оба работают, но я не знаю, какой вариант лучше для того, чего я пытаюсь достичь.Я пытался исследовать эту проблему, но, к сожалению, я не могу найти точный ответ, который я ищу.У кого-нибудь есть какие-либо рекомендации?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Я думаю, это зависит от того, как вы хотели бы проверить на нули

http://nuijten.blogspot.com.au/2009/11/empty-clob-is-not-null-its-not-null.html

0 голосов
/ 23 ноября 2018

Если вы обновите свой столбец BLOB с помощью empty_blob (), тогда вы должны позаботиться о выборе записей, как показано ниже:

предположим, что вы хотите, чтобы все записи, где в столбце BLOB-файлов есть какой-то файл (полезно), затем вынужно выбрать, как показано ниже

select * from your_table where SYS.DBMS_LOB.GETLENGTH(blob_column) > 0;

, но если вы обновите свой столбец BLOB-объектов с нулевым значением, вы можете просто написать как:

select * from your_table where blob_column is not null;
0 голосов
/ 11 мая 2018

Выбор зависит от мнения, поскольку оба варианта удаляют предыдущее вложение.

Я думаю, что большинство людей будет использовать blob_column = null для обозначения «без вложений», тогда как blob_column = empty_blob() будет означать «пустой файл прикреплен». Поэтому я бы порекомендовал использовать null, но, как вы сказали, он работает в любом случае.

...