更新集合元素

您可通过访问游标内的集合来更新集合元素,就如同您选择或删除个别的元素一样。

如果您想要更新集合 SET{100, 200, 300, 500} 来将值 500 更改为 400,请从数据库将该 SET 检索至集合变量内,然后声明游标来在 SET 中的元素间移动,如下图所示。

图: 更新集合元素。

DEFINE s SET(INTEGER NOT NULL);
          DEFINE n INTEGER;
          
          SELECT numbers INTO s FROM orders
          WHERE order_num = 10;
          
          FOREACH cursor1 FOR
          SELECT * INTO n FROM TABLE(s)
          IF ( n == 500 ) THEN
          UPDATE TABLE(s)(x)
          SET x = 400 WHERE CURRENT OF cursor1;
          EXIT FOREACH;
          ELSE
          CONTINUE FOREACH;
          END IF;
          END FOREACH

UPDATE 语句使用集合变量 s 作为集合派生的表。要指定集合派生的表,请使用 TABLE 关键字。在 UPDATE 语句中跟在 (s) 之后的值 (x) 是您提供的列名称 derived column,因为 SET 子句需要它,即使集合派生的表没有列也需要。

请将集合派生的表视作有一行,且看起来与下列示例有些相似:
100      200      300      500

在此示例中,x 是包含值 500 的“列”的虚构的列名称。如果您正在更新内建的、opaque、distinct 或集合类型元素的集合,则仅指定派生的列。如果您正在更新 row 类型的集合,请使用字段名,而不是派生的列,如 更新 row 类型的集合 描述的那样。