Для того, чтобы это имело некоторый смысл, давайте подумаем, что я проверяю все свои предметы в основном списке. Одна из моих проверок состоит в том, чтобы видеть, является ли определенный элемент ингредиентом в рецептах пирога. Я хочу выполнить некоторые дополнительные проверки ингредиентов в зависимости от условий на тортах. Не все ингредиенты в мастере используются в рецептах тортов.
Внутри CASE в инструкции SELECT я пытаюсь перебрать все уникальные пироги, в состав которых может входить ингредиент. Если ингредиент есть в рецепте, тогда я делаю FOR L OOP для всех тортов. Прямо сейчас мой код работает хорошо без FOR L OOP, но, как только я его добавлю, он выдаст мне следующую ошибку:
ORA-00936: отсутствует выражение
Это мой код (упрощенный, с упором на проблему):
select (CASE... END) as Case1,
(CASE... END) as Case2,
...
(CASE
WHEN ((select count(*)
from BOM
where TRIM(MMCU)='MyPlant' and
ITM=IB.ITM AND
TBM IN ('M', 'ALT', 'AL2', 'AL3') AND
(EFFF<=SYSDATE AND
EFFT>=SYSDATE))>=1) THEN
CASE
WHEN IB.STKT='P' THEN
FOR parentItem IN (select distinct KIT
from BOM
where TRIM(MMCU)='MyPlant' AND
ITM=IB.ITM AND
TBM IN ('M', 'ALT', 'AL2', 'AL3') AND
(EFFF<=SYSDATE AND
EFFT>=SYSDATE)
order by KIT)
LOOP
dbms_output.put_line(parentItem)
END LOOP
CASE
WHEN IB.SAFE>0 THEN 1
ELSE 0
END
ELSE 1
END
ELSE 1
END) as CaseN,
(CASE... END) as CaseX
from MasterList IB
...
Запрос не выполняется на строке, с которой начинается FOR L OOP. Чего не хватает для работы l oop?