【发布时间】:2019-11-24 15:43:48
【问题描述】:
我想知道是否可以使用一个程序更新超过 1 行,我不确定为什么这个程序不起作用。仅当我的表中只有 1 行时它才有效。但如果有超过 1 行,我会收到通常的错误消息:
ORA-01422:精确提取返回的行数超过了请求的行数
老实说,我不确定为什么这不起作用。是否有可能一个程序一次不能更新超过 1 行?
create or replace procedure TP3_SP_ARCHIVER_ENCAN
is
V_CURRENT_DATE date;
V_DATE_ENCAN date;
begin
select sysdate, DATE_FIN_ENC into V_CURRENT_DATE, V_DATE_ENCAN
from
TP2_ENCAN;
update TP2_ENCAN
set EST_ARCHIVEE_ENC = 1,
STATUT_ENC = 'Archivé'
where V_CURRENT_DATE - V_DATE_ENCAN > 60;
end TP3_SP_ARCHIVER_ENCAN;
/
我将存档已关闭 60 多天的每个 ENCAN 除外。每次我运行这个程序时,我只想更新那些。
完整的错误信息:
错误报告 - ORA-01422: 精确提取返回的行数多于请求的行数 ORA-06512:在“C##JALAC144.TP3_SP_ARCHIVER_ENCAN”,第 8 行 ORA-06512: 在第 1 行 01422. 00000 - “精确提取返回的行数超过了请求的行数” *原因:exact fetch 中指定的数字小于返回的行数。 *操作:重写查询或更改请求的行数
【问题讨论】:
-
您的错误消息是否为您提供了发生错误的行号?提示:我不认为是更新语句引发了错误。
-
@SamM 最后添加了错误信息,谢谢