我需要创建一个函数,该函数返回SELECT查询的结果。此SELECT查询是在此函数内创建的几个临时表的联接。有没有什么办法可以创建这样的功能?下面是一个例子(这是很简单,在现实中也有与长的查询多个临时表):使用临时表创建函数使用这些临时表返回选择查询
CREATE OR REPLACE FUNCTION myfunction() RETURNS TABLE (column_a TEXT, column_b TEXT) AS $$
BEGIN
CREATE TEMPORARY TABLE raw_data ON COMMIT DROP
AS
SELECT d.column_a, d2.column_b FROM dummy_data d JOIN dummy_data_2 d2 using (id);
RETURN QUERY (select distinct column_a, column_b from raw_data limit 100);
END;
$$
LANGUAGE 'plpgsql' SECURITY DEFINER
我得到错误:
[Error] Script lines: 1-19 ------------------------- ERROR: RETURN cannot have a parameter in function returning set; use RETURN NEXT at or near "QUERY"Position: 237
我提前道歉是否有明显的错误,我这是新的。
PSQL版本的PostgreSQL 8.2.15(Greenplum数据4.3.12.0构建1)
有趣。你得到的错误是什么? –
我已经将你的代码输入到SQLFiddle中,并且有一些语法技巧可能会或可能不会与你的情况相关,它似乎通过检查并返回预期结果http://sqlfiddle.com/#!15/874fa/1 –
你忘了提供你的Postgres版本,这是必不可少的。 “似乎无法让它运行”并不是我听说过的错误消息。顺便说一句,没有“psql函数”。你的是一个plpgsql函数。最后:是什么让你觉得你需要临时表?甚至一个功能? –