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;
这不会产生这样的错误。
我对此非常着迷。 我目前正在编写一个触发器来更改一些日期。为此,我想将最大值放入变量中,如下所示:
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;
这不会产生这样的错误。