使用 FOR UPDATE 选项

使用 FOR UPDATE 选项可声明更新游标。您可以使用更新游标修改(更新或删除)当前的行。

在兼容 ANSI 的数据库中,如果一个 Select 游标不是使用 FOR READ ONLY 关键字声明的,并且该游标遵守在与游标相关联的 SELECT 语句的子集中描述的对更新游标的限制,那么可以使用该 Select 游标更新或删除数据。在声明游标时不需要使用 FOR UPDATE 关键字。

下面的示例声明一个更新游标:
EXEC SQL declare new_curs cursor for
      select * from customer_notansi
      for update;

在更新游标中,可以更新或是删除活动集中的行。在创建更新游标之后,可以通过使用带 WHERE CURRENT OF 子句的 UPDATE 或 DELETE 语句更新或删除当前选择的行。单词 CURRENT OF 是指最近取得的行;它们替代 WHERE 子句中通常的测试表达式。

更新游标能让您执行使用 UPDATE 语句不可能实现的更新操作,因为做出更新的决定以及新数据项的值取决于行的原始内容。您的程序可以在决定是否更新之前评估或操纵选择的数据。UPDATE 语句无法询问正在更新的表。

您可以指定那些可以被更新的特殊列。这些列不需要出现在 Projection 子句的 Select 列表中。