在2个表之间具有JOIN的游标上的更新操作是什么?

问题:是否可以更新在2个表ORDERS和TRANSACTIONS上使用JOIN的CURSOR?为什么或者为什么不?我们如何进行这些表的更新?

每当我们在两个或多个表(在这种情况下为ORDERS和TRANSACTIONS)中的游标中使用JOIN时,就会在虚拟内存中生成一个临时表。但是,由于这是一个临时表,我们可以从该表中获取数据,但是无法更新该表。

如果要更新JOIN中使用的任何表,则必须为所有表声明一个单独的游标,并且必须构建单独的逻辑以更新每个DB2表。例如,如果我们想创建一个UPDATE游标来更新ORDERS表,那么我们将如下声明游标。

示例

EXEC SQL
DECLARE ORDER_CUR CURSOR WITH HOLD FOR
   SELECT * FROM ORDERS
      FOR UPDATE OF ORDER_TOTAL, ORDER_STATUS
END-EXEC

但是,如果我们希望更新该表的所有列,则不应在“ FOR UPDATE” OF子句中指定任何列名。类似地,如果我们要更新TRANSACTIONS表,则需要一个单独的更新游标,如上 。

猜你喜欢