处理集合 / 从集合选择元素 |
图: 以 FOREACH 定义的游标和集合查询。
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) . . . END FOREACH . . . END PROCEDURE;
以上展示的语句形成处理集合变量的元素的 SPL 例程的框架。要将集合分解为它的元素,请使用集合派生的表。在将集合分解为它的元素之后,该例程可单独地访问元素作为集合派生的表的行。既然您已选择了 pnt 中的一个元素,您就可更新或删除那个元素,如 更新集合元素 和 删除集合元素 描述的那样。
要了解集合查询的完整语法,请参阅 GBase 8s SQL 指南:语法 中的 SELECT 语句。要了解集合派生的表的语法,请参阅 GBase 8s SQL 指南:语法 中的“集合派生的表”段。
SELECT * INTO pnt FROM TABLE(vertexes))已以分号(;)作为语句终止符终止了,则数据库服务器可能已发出了语法错误。在此,END FOREACH 关键字是逻辑的语句终止符。