#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 НЕ РАВЕН НУЛЮ