我有這樣的功能:PL/pgSQL的:添加靜態列查詢結果
CREATE OR REPLACE FUNCTION func2(a integer[])
RETURNS SETOF newset AS
$BODY$
declare
x int;
begin
FOREACH x IN ARRAY $1
LOOP
RETURN QUERY SELECT * FROM func1(x);
END LOOP;
return;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
func2
簡單地從到func1
所有呼叫追加所有行。如果第一次調用func1
給出2行,第二次調用給出3行,則func2
將總共返回5行(行本身)。
func1
返回3列的模式,所以當前func2
返回相同的模式。
我想更改func2
,所以它會返回4列。來自func1
的3個和包含值x
的另一列。
例如: 主叫func2(ARRAY[500,200])
和假設func1(500)
返回2行和func1(200)
返回3行。 我將獲得:
first second third forth
a b c 500
d e f 500
g h i 200
j k l 200
m n o 200
我創建了一個newset2
是newset
爲int的另一列FUNC2
CREATE OR REPLACE FUNCTION func2(a integer[])
RETURNS SETOF newset2 AS
如何所需的列添加到函數?
謝謝!簡單明瞭 – John
我可以用'x'命令嗎?如果我添加'排序'它不起作用。它命令調用'func1'而不是整個行。 – John
你的'func2'返回多次。爲了有效排序,你可以將'func1'中的各種行集插入一個臨時表中並返回。 – Andomar