oracle 如何避免重复更新PL/SQL块查询中的列?

b1zrtrql  于 2023-04-29  发布在  Oracle
关注(0)|答案(2)|浏览(242)

在My query in pl/sql块中,我用resp编写了Q列的更新。到F_days列的calucaltion,并在每次运行后,它的更新数量一次又一次,但我只想一次更新。

insert into ISM.TAB
    
    (
            D
            G
            L
            S
            Q
            f_days
        )
    select  D
            G
            L
            S
            Q
            f_DAYS
    from igm.grap;
    
        EXECUTE IMMEDIATE   
       ' UPDATE ISM.TAB   
 SET Q = (Q / 7)* f_days';
5ktev3wc

5ktev3wc1#

DECLARE
 v_updated_flag BOOLEAN := FALSE;
BEGIN
-- Update the Q column only if it hasn't been updated before
IF NOT v_updated_flag THEN
  EXECUTE IMMEDIATE   
  'UPDATE ISM.TAB   
   SET Q = (Q / 7) * f_days';      
  v_updated_flag := TRUE;
END IF;
END;

v_updated_flag变量用于跟踪Q列是否已经被更新。IF NOT v_updated_flag条件确保更新语句只执行一次,v_updated_flag:= TRUE语句设置标志以指示更新已完成。

qzlgjiam

qzlgjiam2#

看起来您想将行从grap表复制到tab表,但要修改f_days值。这可以在插入时完成:

insert into ism.tab (d, g, l, s, q, f_days)
  select d, g, l, s, q / 7 * f_days, f_days from igm.grap;

相关问题