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 查詢時才會對一行放置獨佔鎖。
廣告