对于事务ID不是SPACES的行,如何将ORDERS表的IS_PAID列更新为“是”?您将如何通过“ WHERE CURRENT OF”子句使用UPDATE游标?

一旦执行UPDATE语句,“ WHERE CURRENT OF”子句将在行上放置排他锁。“ WHERE CURRENT OF”子句将指向游标的最近获取的行。

我们可以通过以下方式使用“ WHERE CURRENT OF”更新光标中的行。

  • 光标定义。

EXEC SQL
DECLARE ORDER_CUR CURSOR FOR
SELECT ORDER_ID, TRANSACTION_ID FROM ORDERS
WHERE ORDER_DATE = ‘2020-07-28’
END-EXEC
  • OPEN游标

EXEC SQL
OPEN ORDER_CUR
END-EXEC
  • FETCH光标和更新行

SET WF-END-CURSOR-N TO TRUE
   PERFORM UNTIL WF-END-CURSOR-Y
   EXEC SQL
   FETCH ORDER_CUR INTO :ORDER-ID, :TRANSACTION-ID
END-EXEC
IF TRANSACTION-ID NOT = SPACES
   EXEC SQL
  UPDATE ORDERS SET IS_PAID = ‘YES’
WHERE CURRENT OF ORDER_CUR
END-EXEC
ELSE
CONTINUE
END-IF
END-PERFORM
猜你喜欢