powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Загрузка в блоб таблицы детализации
12 сообщений из 12, страница 1 из 1
Загрузка в блоб таблицы детализации
    #37208380
PavelDart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Обращаюсь вот с таким примером:
страница для вставки новой записи в таблицу.
таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE  "D_INFORM_PUB" 
   (	"ID" NUMBER( 6 , 0 ) NOT NULL ENABLE, 
	"ID_TYPE" NUMBER( 6 , 0 ) NOT NULL ENABLE, 
	"CAPTION" VARCHAR2( 200 ), 
	"ISSUE_DATE" DATE, 
	"ID_DOC_FILES" NUMBER( 6 , 0 ) NOT NULL ENABLE, 
	"ID_INFO_BODY" NUMBER( 6 , 0 ) NOT NULL ENABLE, 
	 PRIMARY KEY ("ID") ENABLE
   )
имеется процесс "Fetch Row from D_INFORM_PUB" по аналогии с примером интернет-магазина. Вот только в примере все данные с формы укладываются в одну табличку, мне же надо отправлять blob в табличку детализации DOC_FILES, возвращать в главную ID_DOC_FILES.
В source File Browser прописал
Код: plaintext
d_db_utils_pkg.d_doc_files_ins(V('P6_ID_DOC_FILES'), V('P6_DOC_CAPTION'))

Собственно понимаю, что маразм, на что недвусмысленно мне указывает и апекс, собственно по этому и обращаюсь к вам.
Разную литературу прочитал, подходящего, к сожалению, не нашёл.
Использую XE/4.0.2
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37213825
ArtMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стандартный компонент File Brows можно связать с BLOB полем таблицы, для которой сделана форма или через вьюшку APEX_APPLICATION_FILES (WWV_FLOW_FILES). Если пользоваться APEX_APPLICATION_FILES, то BLOB при сабмите становится доступен из этой вьюшки.

Вот пример тынц

Код: plaintext
1.
2.
3.
4.
5.
6.
IF ( :P1_FILE_NAME is not null ) THEN 
     INSERT INTO file_subjects(id,NAME, SUBJECT, BLOB_CONTENT, MIME_TYPE) 
      SELECT ID,:P1_FILE_NAME,:P1_SUBJECT,blob_content,mime_type
            FROM APEX_APPLICATION_FILES
            WHERE name = :P1_FILE_NAME;
   DELETE from APEX_APPLICATION_FILES WHERE name = :P1_FILE_NAME;
  END IF;
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37215476
PavelDart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Встречал такой способ, спасибо.
Хотел бы услышать комментарии по поводу использование процесса Fetch Row From ?
На данный момент имею работоспособную связку вьюшка + триггер instead of и пытаюсь к этой связке приспособить формочку при помощи метода Fetch Row From. Но вот незадача, по-видимому, к запросу на вставку присоединяется rowid, так как получаю сообщение
ORA-20508: Unable to perform insert operation. -22816 ORA-22816: unsupported feature with RETURNING clause Unable to process row of table D_INF_PUB_VIE.


Как быть? Вручную придётся прописывать инсерт?
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37215662
ArtMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Процесс Fetch Row From - это стандартный процесс получения данных для заполнения формы. Его можно заменить своим процессом инициализации формы( SELECT INTO). Для сохранения используется стандартный процесс Process Row Of, работает с таблицей или вьюхой. Если у вас несколько таблиц участвуют в ставке, то пишите свой процесс для заполнения таблиц или делайте вьюху, в которой определить треггеры INSTEAD OF. Я сам вьюхи в таком контексте не использовал, возможно там есть нюансы. Я делал свои процессы для инициализации формы и для ее изменения, работает без проблем(зависит от того, как сам напишешь).
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37215747
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, переписывать. Работал в связке вьюшка + триггер instead of + табличная форма, работает ок, кроме некоторых случаев, когда начинается производиться fetch по rowid.
Читал где-то на otn, что в apex 4.1 планируется реализовать выбор доступа rowid или pk, но там вопрос касался табличных форм.
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37220205
PavelDart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ArtManПроцесс Fetch Row From - это стандартный процесс получения данных для заполнения формы. Его можно заменить своим процессом инициализации формы( SELECT INTO).
А почему инициализации? Не будет ли ошибки об отсутствии данных? Может всё-таки процесс OnSubmit?
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37220393
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз:
Fetch Row From - процесс для выборки данных и помещении на форму, он как раз при загрузке страницы срабатывает
Process Row of - процесс изменения данных в таблицах (сохранить, удалить и т.д.) он расположен как раз в on Submit.
Используя встроенный debug, можно всегда посмотреть где возникает ошибка. И после этого переписать процесс аналогичным образом в on submit или в on load. Если, конечно, дело в ROWID, всякие ошибки могут возникать, когда что-нибудь неправильно там направишь. Код в общем-то там элементарный, и ничего страшного не произойдёт, эти 2 процесса довольно часто приходится переписывать, поскольку логика на формах работы с базой часто бывает сложной.
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37220552
PavelDart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvUserProcess Row of - процесс изменения данных в таблицах (сохранить, удалить и т.д.) он расположен как раз в on Submit.
Ну по дефаулту процесс подвесился на инициализацию страницы, по этому уточнил. Ну логично, что он должен быть на сабмите.
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37220562
PavelDart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvUserРаботал в связке вьюшка + триггер instead of + табличная форма, работает ок, кроме некоторых случаев, когда начинается производиться fetch по rowid.
Вы использовали Process Row of ? Дело в том, что у меня этот процесс добавляет rowid. Соответственно вставка не происходит.
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37220644
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, не использовал. В обычной форме там несколько другие стандартные процессы...
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37223575
PavelDart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvUserНет, не использовал. В обычной форме там несколько другие стандартные процессы...
Можно по-подробнее, как Вы реализовали такую форму?

у меня от предыдущих постов реализация продвинулася недалеко, получается так:
- форма типа "On table/view" без стандартных процессов
- свой процесс на блоке PL/SQL

в сурсах процесса это:
Код: plaintext
1.
2.
3.
begin
insert into D_INF_PUB_VIE (CAPTION,ISSUE_DATE,src,Inf_type,doc,doc_title)
values(v('P7_CAPTION'),v('P7_ISSUE_DATE'),v('P7_SRC'),v('P7_INF_TYPE'),v('P7_DOC'),v('P7_DOC_TITLE'));
end;

из этого
item P7_DOC типа Fille Browser, основывающийся на blob и
item P7_SRC тоже самое, но только на сlob

понимаю, что итемы на blob/clob требуют отдельной обработки,
и вот для обработки итема на блоле я нашёл это:

Код: plaintext
1.
2.
3.
4.
5.
6.
IF ( :P1_FILE_NAME is not null ) THEN 
     INSERT INTO file_subjects(id,NAME, SUBJECT, BLOB_CONTENT, MIME_TYPE) 
      SELECT ID,:P1_FILE_NAME,:P1_SUBJECT,blob_content,mime_type
            FROM APEX_APPLICATION_FILES
            WHERE name = :P1_FILE_NAME;
   DELETE from APEX_APPLICATION_FILES WHERE name = :P1_FILE_NAME;
  END IF;

а вот с обработкой слоба хуже - обработку в plsql-блоке найти не удалось.
...
Рейтинг: 0 / 0
Загрузка в блоб таблицы детализации
    #37225701
PavelDart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С хранением слоб/блоб-объекта вопрос решён.
Очень подробно описано здесь:
http://forums.oracle.com/forums/thread.jspa?messageID=9380701�
Благодарю ArtMan , SvUser за то, что не прошли мимо, а помогли.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Загрузка в блоб таблицы детализации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]