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 查询时才会对一行放置独占锁。
广告