COBOL-DB2 程式中“FOR UPDATE OF”子句的用途和用法是什麼?


問題:遊標中“FOR UPDATE OF”子句的用途是什麼?如果在 COBOL-DB2 程式中不使用此子句而執行 UPDATE 語句會發生什麼?

解決方案

“FOR UPDATE OF”子句在遊標宣告中給出,當我們想要更新表時使用。所有需要更新的列都應該在遊標宣告中給出。

“FOR UPDATE OF”子句將在遊標開啟後對所有符合條件的行放置獨佔鎖。我們也可以在不使用“FOR UPDATE CLAUSE”的情況下更新表,但在這種情況下,只有在執行 UPDATE 查詢時才會對行放置獨佔鎖。例如,如果我們要更新 ORDERS 表中所有 ORDER_DATE 為 2020 年 9 月 15 日的條目,那麼我們將編寫如下更新遊標。

示例

EXEC SQL
DECLARE ORDER_CUR CURSOR WITH HOLD FOR
   SELECT * FROM ORDERS WHERE ORDER_DATE = ‘2020-09-15’
      FOR UPDATE OF ORDER_TOTAL, ORDER_STATUS
END-EXEC

此查詢將對 ORDERS 表中所有 ORDER_DATE 為 2020 年 9 月 15 日的行放置獨佔鎖。但是,如果我們想要更新此表的所有列,則不必在“FOR UPDATE OF”子句中給出任何列名。

也可以宣告一個 SELECT 遊標並一次對一行使用 UPDATE 查詢。但在這種情況下,只有在執行 UPDATE 查詢時才會對一行放置獨佔鎖。

更新於:2020-12-01

4K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始
廣告