ORA-01422, но Query работает нормально
Я схожу с ума по этому поводу. В настоящее время я пишу триггер, чтобы изменить некоторые даты вокруг. Для этого я хочу получить максимальное значение в переменную следующим образом:
SELECT date INTO datevar
FROM table
WHERE date = (SELECT MAX(date)
FROM table
WHERE condition = loop.condition);
Триггер всегда выдает ORA-01422 (возвращено слишком много строк) в строку этого запроса; но когда я пытаюсь выполнить запрос в моем sqldeveloper (подставляя значение цикла числом), запрос работает нормально, с любым набором данных (работает нормально = возвращает ровно одну строку).
Я пробовал разные способы выбрать максимальное значение в моей переменной, но это всегда одна и та же проблема. Цикл работает нормально (когда я запускаю триггер как хранимую процедуру с подробным ведением журнала, я вижу идентификаторы строк цикла и все), но он всегда начинается с указанной ошибки без записи в базу данных.
Я также исследовал сеть, но ничего не нашел. Буду признателен за любые идеи.
1 ответ
Почему вы запускаете такой сложный запрос? Заменить его на:
SELECT MAX(date) INTO datevar
FROM table
WHERE condition = loop.condition;
Это не может генерировать такую ошибку.