2013-07-05 68 views
0

我想創建一個postgresql函數返回多個行。下面的代碼是什麼樣子:postgresql函數 - 如何返回行數據集

CREATE OR REPLACE FUNCTION getallwidgets() 
    RETURNS SETOF widgets AS 
$BODY$ 
SELECT * FROM widgets; 
$BODY$ 
    LANGUAGE sql VOLATILE 
    COST 100 
    ROWS 1000; 
ALTER FUNCTION getallwidgets() 
    OWNER TO postgres; 

當我使用pgadmin3測試此代碼,我得到一列數據,用逗號分隔每個字段。我想知道的是如何獲取列出的各個字段,以便當我循環訪問調用存儲過程的代碼中的數據集時,可以按列名引用每個字段。

謝謝。

編輯1

在pgadmin3,當我運行該腳本,在輸出窗口,我在一列中得到如下數據:

(1, "widget1","this is my description", 1) 
(2, "another widget","description2", 3) 

換句話說,我得到兩行上面的數據出現在一列中。 我期待:

id  name    description     user_id 
1  "widget1"  "this is my description"   1 
2  "another widget" "description2"     3 
+0

你確定嗎?我剛剛在我的數據庫上測試了這些代碼,而且我收到的卻是不同的字段。你能提供你的輸出和你的小部件表中的一些數據例子嗎? – cathulhu

+0

cathulu,我已更新我的帖子。檢查編輯1 –

回答

-1

您可以從輸出參考列名(如果您知道)。例如,如果你已經列名爲COL1,COL2,COL3在你的部件表,可以發出:

SELECT col1, col2, col3 
FROM getallwidgets(); 

是你以後在做什麼?

+0

工作!非常感謝。 –