首页 > 解决方案 > 我需要将此列与一个变量进行比较以更新表

问题描述

我需要将此列与更新表的变量进行比较,我有这个查询:

declare v_IdMig int;
begin
select max(ID_Mig)
      into v_IdMig
      from MIGPT021_LOG;

update MIGPT021_LOG
set RegPostMig = (select sum(cantidad) CantidadReg
from
(
select count(*) cantidad, sysdate FechaHora from CRPDTA.F59PT021
union all
select count(*) cantidad, sysdate FechaHora from CRPDTA.F59PT021_HTR)),
FecPostReg = (select max(FechaHora) Fecha
from
(
select count(*) cantidad, sysdate FechaHora from CRPDTA.F59PT021
union all
select count(*) cantidad, sysdate FechaHora from CRPDTA.F59PT021_HTR))
where max(Id_Mig) = v_IdMig;

但我有这个错误:

ORA-06550:第 20 列,第 7 列:PL/SQL:ORA-00934:没有许可证的功能 ORA-06550:第 7 列,第 1 列:PL/SQL:忽略 SQL 语句 ORA-06550:第 20 列,第 28 列:PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:

(begin case declare end exception exit for goto if loop mod null pragma raise return select update while with <a double-quote 06550. 00000 - "line %s, column %s:\n%s" *原因:通常是 PL/ SQL 编译错误。*操作:

谢谢

标签: oracle

解决方案


ORA-00934: función de grupo no permitida aquí

您不能在 WHERE 子句中使用组函数(例如 MAX),就像您在此处尝试做的那样:

where max(Id_Mig) = v_IdMig;

我想你只是想要:

where Id_Mig = v_IdMig;

您已经选择了最大值。我假设您然后想要更新具有该值的行。


推荐阅读