1

以下のクエリは独立して正常に実行されていますが、postgre 関数内で多くの問題を示しています

CREATE TEMP TABLE tbl (h ltree, pathid int) ; 
CREATE TEMP TABLE temp_res (pathid int, res_count int) ; 
insert into tbl select l_tree,pathid from tblinfo where parentid in (880);
insert into temp_res select T.pathid pathid from tblinfo p1, tbl T where index(p1.l_tree,T.h ) != -1 GROUP BY T.pathid order by T.pathid;
select p.pathid pathid, p.name name, p.PBS PBS,p.parentid parentid,p.resid resid from tblinfo p, temp_res t where t.pathid = p.pathid;

次のような関数が必要です

CREATE OR REPLACE FUNCTION getresourceinfo(opened_path int,tablename varchar) returns TABLE (pathid int,name varchar,pbs varchar, parentid varchar, resid int) AS $BODY$ 

880 と tblinfo にそれぞれ open_path と tablename の 2 つの変数を使用するだけです。テーブルを返すことに関する多くの投稿があることは知っていますが、それらの多くを基本的なpostgresの知識に合わせて試した後、何か提案があれば非常に役立つと思います。私のクエリが不器用だと思われる場合は、数値 n とテーブル名の 2 つの引数を取る 1 つの関数を教えてください。10 個の列があり、そのうちの 1 つがシリアル番号であると仮定すると、関数は n を超えるすべての行を返し、テーブル名の 2 列または 3 列を返す必要があります。

4

1 に答える 1