0

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

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

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

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

我也搜索了网络,但我没有找到任何东西。我会很感激任何想法。

4

1 回答 1

6

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

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

这不会产生这样的错误。

于 2016-03-17T15:27:33.180 回答