当使用集合游标从集合变量获取个别元素时,FOREACH 语句具有以下限制:
- 它不能包含 WITH HOLD 关键字。
- 它必须在 FOREACH 循环中包含受限制的 SELECT 语句。
此外,与集合游标相关联的 SELECT 语句具有以下限制:
- 它的一般结构为 SELECT… INTO … FROM TABLE。该语句从按照 TABLE 关键字指定的集合变量中一次选择一个元素放入另一个被称为
element variable 的变量。
- 它不能在 Projection 列表中包含表达式。
- 它不能包含以下子句或选项:WHERE 、GROUP BY 、ORDER BY 、HAVING 、INTO TEMP 和 WITH REOPTIMIZATION。
- 该元素变量的数据类型必须与集合的元素类型相同。
- 元素变量的数据类型可以是任何 Opaque 、Distinct 或集合数据类型,或者任何除 BIGSERIAL 、BLOB 、BYTE 、CLOB
、SERIAL 、SERIAL8 或 TEXT 外的内置数据类型。
- 如果集合变量包含 Opaque 类型、Distinct 类型、内置类型或集合数据类型,则投影列表必须是星号(*)。
- 如果集合包含 ROW 类型,则投影列表可以是一个或多个字段名称的列表。