ORA-01422,但查询工作正常

时间:2016-03-17 15:25:36

标签: sql oracle ora-01422

我对此非常疯狂。 我正在写一个触发器来改变一些日期。为此我想得到一个变量的最大值:

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

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

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

我也在网上搜索,但我没找到任何东西。我很欣赏任何想法。

1 个答案:

答案 0 :(得分:6)

为什么要运行如此复杂的查询?替换为:

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

这不会产生这样的错误。

相关问题