首页 > 解决方案 > 更新语句不适用于循环

问题描述

我需要人们的快速帮助。我有一个程序正在更新表中的一些记录。但是内部循环更新语句没有执行,尽管它正在获取游标中的记录。

我试图将 dbms_output.put_line 放在语句中,但它没有打印。

  CURSOR cur_or
  IS
  SELECT DISTINCT c.general_ledger_gid,
                  b.order_release_gid --, c.cost_type
    FROM invoice_shipment a,
         view_shipment_order_release b,
         shipment_cost c
   WHERE a.shipment_gid      = b.shipment_gid
     AND c.shipment_gid        = c.shipment_gid
     AND a.shipment_gid        = c.shipment_gid
     AND a.invoice_gid         = p_invoice_gid
     AND c.general_ledger_gid IS NOT NULL;

  CURSOR cur_orl (lv_ORDER_RELEASE_GID IN VARCHAR2)
  IS
  SELECT d.order_release_line_gid
    FROM order_release_line d
   WHERE order_release_gid = lv_ORDER_RELEASE_GID;

BEGIN
  FOR rec_or IN cur_or
  LOOP
    UPDATE allocation_order_release_d
    SET general_ledger_gid    = rec_or.general_ledger_gid
    WHERE general_ledger_gid IS NULL
    AND order_release_gid     = rec_or.order_release_gid;

    dbms_output.put_line ('a Passed');
    FOR rec_orl IN cur_orl (rec_or.order_release_gid)
    LOOP
      UPDATE allocation_or_line_d
      SET general_ledger_gid     = rec_or.general_ledger_gid
      WHERE general_ledger_gid  IS NULL
      AND order_release_line_gid = rec_orl.order_release_line_gid;

      dbms_output.put_line ('b Passed');
    END LOOP;
    dbms_output.put_line ('c Passed');
  END LOOP;
  dbms_output.put_line ('d Passed');
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;

它应该在循环内运行更新语句,因为游标正在获取值

标签: sqlplsql

解决方案


推荐阅读