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+ 浏览量

启动您的职业生涯

完成课程获得认证

开始
广告