2013-03-21 72 views
0

我有我這樣創建了一個功能:如何更改此函數中返回值的格式?

create or replace function core.nrt_summary_by_param_id(int) returns table (reason_type_id int, reason_id int, descr varchar(256), num int, pct numeric, cause_rank int) as $$ 
begin 
    return query 
     with r3 as (
      //A bunch of queries 
     ) 
     select 
      r3.reason_type_id, 
      r3.reason_id, 
      r3.desc, 
      r3.num, 
      r3.pct, 
      r3.cause_rank 
     from r3; 
     where 
      r3.param_id = $1 
    return; 
end 
$$ language plpgsql; 

當我調用該函數像這樣:

select nrt_summary_by_param_id(5); 

的結果是這樣的:

  nrt_summary_by_param_id 

(1,2001,「A」,14,19.72,1)

(1,2006, 「B」,9,12.68,2)

(1,2202, 「C」,8,11.27,3)

(1,2002, 「d」 ,8,11.27,3)

(1,2302, 「E」,7,9.86,5)

(1,2201, 「F」,4,5.63,6)

( 1,2206,「G」,4,5.63,6)

(1,2301,「H」,2,2.82,8)

(1,2303, 「I」,2,2.82,8)

(1,2005, 「J」,2,2.82,8)

(1,2004, 「K」 ,2,2.82,8)

(1,2204, 「L」,2,2.82,8)

(,, 「M」,7,9.87,11)

(13行)

我如何從具有多個列的表中返回我的函數?我如何讓每個單獨的列顯示出來?我希望返回結果是,如果函數內部的整個查詢通過命令行正常執行。謝謝!

回答

1

如果你的函數返回一個表,那麼你應該把它當作一個表來對待。我們通常如何看待SQL中的表?我們選擇...從他們。您正在尋找更多的東西是這樣的:

select ... 
from nrt_summary_by_param_id(5); 
+0

@DiZou:如果你沒有得到微妙的暗示:開始'SELECT * FROM nrt_summary_by_param_id(5);' – 2013-03-21 15:59:30

+0

啊好了,這工作的感謝! – 2013-03-21 16:00:34