2014-12-13 284 views
0

有沒有辦法創建返回自定義數據集的postgres存儲函數(使用plpgsql可以設置輸入參數)?Postgres函數返回自定義數據集

我試圖根據官方手冊,以做這樣的事情:

CREATE FUNCTION extended_sales(p_itemno int) 
RETURNS TABLE(quantity int, total numeric) AS $$ 
BEGIN 
    RETURN QUERY SELECT quantity, quantity * price FROM sales 
       WHERE itemno = p_itemno; 
END; 
$$ LANGUAGE plpgsql; 

,但結果是隻有一列數組,它包含的類型(數量,總計),但我需要得到兩列包含「數量」列和「總計」列的數組。

+3

您需要使用'選擇*確切的輸出(...)'。另外你不需要PL/pgSQL函數:http://sqlfiddle.com/#!12/d5aef/1 – 2014-12-13 07:47:07

+0

非常感謝!它現在有效。 – user1820686 2014-12-13 12:23:46

回答

1

在猜測你正在運行:

SELECT extended_sales(1); 

這將返回一個複合型列。如果你想擴展它,你必須去運行:

SELECT * FROM extended_sales(1); 

而且,@a_horse_with_no_name筆記,一個PL/pgSQL函數是完全沒有必要在這裏。大概這是一個簡單的例子?

今後請包括:

  • 你的PostgreSQL版本;和
  • 你跑的確切SQL和你extended_sales得到
+0

它現在肯定有效。 我考慮到將來有關db版本和sql-script的建議,謝謝! – user1820686 2014-12-13 12:24:03