Как создать APEX_COLLECTION? - PullRequest
       66

Как создать APEX_COLLECTION?

0 голосов
/ 18 октября 2018

Я хочу создать коллекцию apex_collection в Oracle SQL Developer для моего веб-приложения apex.Вот мой код:

 apex_collections.create_or_truncate_collection('TEST');

После выполнения оператора я получаю следующее:

enter image description here

Если я введу оператор выбора:

SELECT *
  FROM apex_collections
 WHERE collection_name = 'TEST';

потом я получаю это:

enter image description here

Мне кажется, что ни одна коллекция не была создана, хотя естьнет кода ошибки.Что я делаю неправильно?Почему коллекция не создана?Я также пытался запустить оператор в SQL Workshop Oracle APEX, но команда там неизвестна.Я использую версию Oracle 12c.

1 Ответ

0 голосов
/ 18 октября 2018

Для создания коллекции вам понадобится действительный сеанс APEX.Если вы используете APEX 18.1 или новее, используйте процедуру apex_session.create_session (см. документация ) для ее создания.Убедитесь, что app_id действителен для рабочей области, которой назначена ваша схема.

Для чего-либо до 18.1 OraOpenSource oos-utils имеет процедуру, которая делает то же самое: oos_util_apex.create_session (см код ).Вам нужно будет установить oos-utils или хотя бы скомпилировать этот пакет в вашей схеме.Также можно скопировать действие, содержащееся в этой процедуре.

Обновление: Кроме того, я только что заметил комментарии Джеффа Смита.Вам нужно будет добавить членов в коллекцию, чтобы получить значимые результаты.

begin
  apex_session.create_session(
    p_app_id => 100
    , p_page_id => 1
    , p_username => 'somebody'
  );
end;
/

select * from apex_collections; -- shows nothing

begin
  apex_collection.create_or_truncate_collection(
    p_collection_name => 'test'
  );

  apex_collection.add_member(
    p_collection_name => 'test'
    , p_c001 => 'test row'
  );
end;
/

select * from apex_collections; -- shows one record

Кроме того, если вы используете SQLDEV для устранения неполадок в коллекциях в сеансе APEX, то вы захотите использовать либоПроцедура apex_session.attach или oos_util_apex.join_session, в зависимости от используемой версии APEX.Используйте идентификатор сеанса APEX, назначенный вашему сеансу браузера.НТН.

...