使用 SELECT ... INTO 语句

如在 FOREACH 的图表中所指出的,并非 SELECT 语句的所有子句和选项都可用在 FOREACH 语句中。FOREACH 语句中的 SELECT 语句必须包含 INTO 子句。它还可以包括 UNION 和 ORDER BY 子句,但不能使用 INTO TEMP 子句。关于 SELECT 语法和用法的完整描述,请参阅 SELECT 语句。变量列表中的每个变量的数据类型和计数必须与 SELECT ... INTO 语句返回的每个值相匹配。

如果您在 FOREACH 语句中包含分号(; )以终止 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) 规范之后的分号来避免此错误。