2013-03-21 91 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