WHERE CURRENT OF 子句删除一个游标的活动集合的当前行。当包括这个子句时,DELETE 语句会在游标的当前位置处除去活动集合的行。在删除之后,没有任何当前的行存在;您无法使用游标删除或更新行,直到您使用 FETCH 语句(ESQL/C 例程中)或 FOREACH 语句( SPL 例程中)重新确定游标的位置。
你可以使用更新游标来访问游标的活动集合的当前行。在可以使用 WHERE CURRENT OF 子句之前,您必须通过使用 FOREACH 语句(SPL 中)或使用带 FOR UPDATE 子句( GBase 8s ESQL/C 中)的 DECLARE 语句。跟在 OF 关键字之后的 cursor_id 不能通过 SPL 例程中的 DECLARE 声明。
除非使用 FOR READ ONLY 关键字声明所有 Select 游标,否则所有 Select 游标在兼容 ANSI 的数据库中均是潜在的更新游标。您可以将 WHERE CURRENT OF 子句与没有用 FOR READ ONLY 关键字声明的任何 Select 游标一起使用。
如果您只从表层次结构中的一个表进行选择,则不可以使用 WHERE CURRENT OF 。即这个子句对 ONLY 关键字无效。
通过删除集合变量控制的集合派生的表的当前行,WHERE CURRENT OF 子句可用于从集合删除元素。有关更多信息,请参阅集合派生表。