【问题标题】:I need comparate this column with a variable for update a table我需要将此列与一个变量进行比较以更新表
【发布时间】:2020-12-14 08:12:21
【问题描述】:

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

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: función de grupo no permitida aquí 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

谢谢

【问题讨论】:

  • 你缺少一个 END;在你的块的末尾

标签: oracle


【解决方案1】:
ORA-00934: función de grupo no permitida aquí

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

where max(Id_Mig) = v_IdMig;

我想你只是想要:

where Id_Mig = v_IdMig;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多