如在 FOREACH 的图表中所指出的,并非 SELECT 语句的所有子句和选项都可用在 FOREACH 语句中。FOREACH 语句中的 SELECT 语句必须包含 INTO 子句。它还可以包括 UNION 和 ORDER BY 子句,但不能使用 INTO TEMP 子句。关于 SELECT 语法和用法的完整描述,请参阅 SELECT 语句。变量列表中的每个变量的数据类型和计数必须与 SELECT ... INTO 语句返回的每个值相匹配。
CREATE DBA PROCEDURE IF NOT EXISTS 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); -- Semicolon not valid
. . .
END FOREACH
. . .
END PROCEDURE;
在上面的示例中,您可以通过删除紧跟在
TABLE(vertexes) 规范之后的分号来避免此错误。