删除集合元素

在您将个别的元素从集合变量选择至元素变量内之后,您可从集合删除该元素。例如,在您以集合查询从集合变量 vertexes 选择一个点之后,您可将该点从集合移除。

删除集合元素涉及的步骤包括:
  1. 声明集合变量和元素变量。
  2. 将集合从数据库选择至集合变量内。
  3. 声明游标,以便于您可从集合变量一次选择一个元素。
  4. 编写定位您想要删除的元素的循环或分支。
  5. 使用 DELETE WHERE CURRENT OF 语句来从集合删除元素,该语句使用集合变量作为集合派生的表。
下图展示删除 vertexes 中四个点之一的例程,以便于多边形成为三角形,而不是矩形。

图: 删除四个点之一的例程。

CREATE PROCEDURE shapes()
          
          DEFINE vertexes SET( point NOT NULL );
          DEFINE pnt point;
          
          SELECT definition INTO vertexes FROM polygons
          WHERE id = 207;
          
          FOREACH cursor1 FOR
          SELECT * INTO pnt FROM TABLE(vertexes)
          IF pnt = '(3,4)' THEN
          -- calls the equals function that
          -- compares two values of point type
          DELETE FROM TABLE(vertexes) 
          WHERE CURRENT OF cursor1;
          EXIT FOREACH;
          ELSE
          CONTINUE FOREACH;
          END IF;
          END FOREACH
          . . .
          END PROCEDURE;

在前图中,FOREACH 语句声明游标。SELECT 语句是集合派生的查询,从集合变量 vertexes 一次将选择一个元素至元素变量 pnt

IF THEN ELSE 结构测试当前在 pnt 中的值,看它是否为点 '(3,4)'。请注意,表达式 pnt = '(3,4)' 调用在点数据类型上定义的 equal() 函数的实例。如果 pnt 中的当前值为 '(3,4)',则 DELETE 语句删除它,且 EXIT FOREACH 语句退出该游标。
提示: 从存储在集合变量中的集合删除元素,未将它从存储在数据库中的集合删除。在您从集合变量删除元素之后,您必须以新的集合更新存储在数据库中的集合。要了解展示如何更新集合列的示例,请参阅 更新数据库中的集合

GBase 8s SQL 指南:语法 中描述 DELETE 语句的语法。