魔术关键字是TABLE
. 这是一个演示解决方案的脚本:
虚拟程序
CREATE PROCEDURE sp_func(begin_date DATE, end_date DATE)
RETURNING INTEGER AS id, VARCHAR(10) AS NAME, DECIMAL(5,2) AS TIME;
RETURN 1, "smith", 3.2 WITH RESUME;
RETURN 2, "neo", 8.2 WITH RESUME;
RETURN 3, "morpheus", 2.4;
END PROCEDURE;
EXECUTE PROCEDURE sp_func('2012-01-01', '2012-12-31');
输出
1 smith 3.20
2 neo 8.20
3 morpheus 2.40
主 SELECT 语句
SELECT AVG(a.TIME)
FROM TABLE(PROCEDURE sp_func('2012-01-01', '2012-12-31')) AS A(id, name, time)
;
输出
4.6
带有列名的 AS 子句是必要的,即使过程命名了它的返回值。
此语法记录在 Informix Guide to SQL: Syntax manual,在第 2 章的 SELECT 语句下,子标题是“迭代器函数 (IDS)”(11.70 的 ids-sqs_bookmap.pdf 副本中的 p2-638我有)。