我需要創建一個函數,該函數返回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函數。最後:是什麼讓你覺得你需要臨時表?甚至一個功能? –