GBase 8s
运维管理
文章

南大通用GBase8s 常用SQL语句(208)

发表于2025-12-17 10:58:2526次浏览1个评论

迭代器函数
 

FROM 子句可包括对迭代器函数的调用,来为查询指定来源。迭代器函数是用户定义的功能,多次返回到它的调用 SQL 语句,每次返回至少一个值。

您可使用虚拟的表接口查询迭代器 UDR 的返回结果集。使用此语法来在 FROM 子句中调用迭代器函数:

迭代器

在早于 GBase 8s 10.5 的版本中,要求有关键字 FUNCTION(或 PROCEDURE)。在此版本中,这些对 SQL 的 ANSI/ISO 标准的关键字扩展是可选的,且无效。下列两个指定 fibGen( ) 作为迭代器函数的查询规范,是等同的:

SELECT * FROM TABLE FUNCTION ( fibGen(10));

SELECT * FROM TABLE ( fibGen(10));

仅可在此查询的上下文之内引用 table。在 SELECT 语句终止之后,虚拟表不再存在。

列的数目必须与通过迭代器返回的值的数量相匹配。外部的函数可返回不超过一个值(但那可为集合数据类型)。SPL 例程可返回多个值。

然而,如果迭代器 table 函数的任何参数是聚集表达式,则数据库服务器发出错误 -595.

例如,要引用该 SELECT 语句的其他部分中的虚拟 table,在 WHERE 子句或 HAVING 子句中,您必须在 FROM 子句中声明它的名称和虚拟的列名称。如果您在 Projection 子句的 Select 列表中使用星号标记,则无需在 FROM 子句中声明 table 名称或 column 名称:

SELECT * FROM ...

要获取在查询中使用迭代器函数的更多信息和示例,请参阅 GBase 8s 用户定义的例程和数据类型开发者指南

评论

登录后才可以发表评论
用户头像
levvel发表于 2个月前
哎呀,怎么说呢,嗯......