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 rows)

複数の列を持つテーブルとして関数から戻り値を取得するにはどうすればよいですか?個々の列を表示するにはどうすればよいですか?関数内のクエリ全体がコマンドラインから正常に実行された場合のように戻りたいと思います。ありがとう!

4

1 に答える 1

1

関数がテーブルを返す場合は、テーブルのように扱う必要があります。通常、SQLでテーブルをどのように見ますか?それらから...を選択します。あなたはこのようなものをもっと探しています:

select ...
from nrt_summary_by_param_id(5);
于 2013-03-21T15:57:16.150 に答える