ORA-01422,但查询工作正常

ORA-01422, but Query works fine

我对此非常着迷。 我目前正在编写一个触发器来更改一些日期。为此,我想将最大值放入变量中,如下所示:

SELECT date INTO datevar
               FROM table
               WHERE date = (SELECT MAX(date)
                                    FROM table
                                    WHERE condition = loop.condition);

触发器始终在此查询的行上抛出 ORA-01422(返回的行太多);但是当我在我的 sqldeveloper 中尝试查询(用数字代替循环值)时,查询工作正常,适用于任何数据集(工作正常 = returns 恰好一行)。

我尝试了不同的方法将最大值 select 放入我的变量中,但每次都是同样的问题。循环工作正常(当我 运行 触发器作为具有详细日志记录的存储过程时,我看到循环行 ID 和所有内容),但它总是以所述错误开始而不写入数据库。

我也在网上搜索过,但我没有找到任何东西。如果有任何想法,我将不胜感激。

为什么要 运行 这么复杂的查询?将其替换为:

SELECT MAX(date) INTO datevar
FROM table
WHERE condition = loop.condition;

这不会产生这样的错误。