【发布时间】:2016-03-28 12:58:16
【问题描述】:
我正在尝试创建一个 POSTGRESQL 函数,该函数将首先使用 INSERT 使用 WHILE LOOP 的表中的一些数据,然后使用 SELECT 该表的结果。
这是一个 sql 示例:
CREATE OR REPLACE FUNCTION get_levels_test (maxlevel int) RETURNS SETOF list_of_levels AS $$
DECLARE
level int = 1;
BEGIN
TRUNCATE list_of_levels;
WHILE (level <= maxlevel) LOOP
INSERT INTO list_of_levels
SELECT level;
level = level + 1;
END LOOP;
select * from list_of_levels;
END;
$$ LANGUAGE PLPGSQL VOLATILE;
然后我尝试使用:select get_levels_test (3) 调用此函数,这向我显示了此错误:
ERROR: query has no destination for result data
Hint: If you want to discard the results of a SELECT, use PERFORM instead.
Where: PL/pgSQL function "get_levels_test" line 12 at SQL statement
list_of_levels 表仅包含一个 int 列。
如果需要,我使用的是 PostgreSQL 8.2.15(Greenplum Database 4.3.3.1 build 1)。
【问题讨论】:
标签: function greenplum postgresql-8.2