ОТСУТСТВУЕТ В запросе с использованием коллекции apex

#sql #collections #oracle-apex

#sql #Коллекции #oracle-apex

Вопрос:

У меня есть форма со списком выбора. Раньше нас интересовал только выбор пользователем одного имени опроса, но теперь мы хотим сохранить несколько имен опроса в коллекции.

Кроме того, после выбора имени опроса оно больше не должно отображаться в списке. Предыдущий запрос выглядит следующим образом:

 Select survey_name, survey_id  
from SURVEYS  
  

Простой список. Я написал запросы перед использованием NOT IN, но они были основаны на таблицах. У меня возникли проблемы с созданием моего LOV и включением коллекции. Я попробовал следующее

 SELECT survey_name N, survey_id S  
FROM SURVEYS  
where survey_id NOT IN (  
   SELECT ac.c003  
   FROM apex_collections ac  
   WHERE ac.collection_name = 'BENCHMARKS' )  
  

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

Любая помощь по этому вопросу была бы очень признательна. Заранее спасибо

Комментарии:

1. Где вы тестируете этот запрос, на страницах приложения или в среде IDE, такой как SQL Developer / TOAD? Как заполняется коллекция? Если вы создаете отчет на странице APEX с SELECT ac.c003 FROM apex_collections ac WHERE ac.collection_name = 'BENCHMARKS' помощью, отображаются ли в отчете какие-либо данные?

2. Также: где (какой процесс / точка отображения) заполняется коллекция? Что происходит с выбранным значением из всплывающего окна? Предназначен ли lov для повторного использования несколько раз с одной и той же родительской страницы?

Ответ №1:

Будьте осторожны, чтобы ваш подзапрос не возвращал никаких нулевых значений. Один null будет использовать всю вашу логику NOT IN. Рекомендуется всегда добавлять условие «not null» к любому подзапросу, используемому подобным образом.

ВЫБЕРИТЕ ac.c003
ИЗ apex_collections ac
, ГДЕ ac.collection_name = ‘BENCHMARKS’, А ac.c003 НЕ РАВЕН НУЛЮ