У меня есть запрос:
SELECT xmlelement("Response",
xmlelement("hist",
xmlelement("details",
xmlagg(x.node)))
) AS XML_HIST,
x.cnt
FROM (
SELECT null AS node,
COUNT(1) OVER() AS cnt
FROM dual
--WHERE 1=2
) x
GROUP BY x.cnt
Запрос x был выполнен как есть для этого вопроса (конфиденциальные данные).
Когда запрос x возвращает какие-либо данные, все в порядке.Но когда в таблице нет записей (здесь: WHERE 1 = 2), мой код в пакете завершается с ошибкой no_data_found.
Я пытаюсь найти выражение, отличное от
<<inner_block>>
begin
SELECT..
exception
when others then...
end inner_block;
я пытался сделать что-то вроде
SELECT MAX(xmlelement("docGetPackageHistoryResponse",
xmlelement("histories",
xmlelement("contract-history",
xmlagg(x.node)))
)) AS XML_HIST,
MAX(cnt)
, но я получаю ошибку ORA-22950: невозможно заказать объекты без метода MAP или ORDER.
Есть идеи?Спасибо:)
PS пожалуйста, не задавайте мне вопросы типа "почему вы избегаете решения внутреннего блока?".