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;

Это не может генерировать такую ​​ошибку.

Другие вопросы по тегам