,我有以下plpgsql
功能PostgreSQL
:如何插入一個循環行表
CREATE OR REPLACE FUNCTION func1()
RETURNS SETOF type_a AS
$BODY$
declare
param text;
sqls varchar;
row type_a;
begin
code.....
sqls='select * from func3(' || param || ') ';
for row in execute sqls LOOP
return next row;
END LOOP;
end if;
return;
end
$BODY$
LANGUAGE plpgsql VOLATILE
我要添加insert
statment進入死循環,使迴路會工作,因爲它是,但現在所有的行也會保存在一張表中。
for row in execute sqls LOOP
INSERT INTO TABLE new_tab(id, name)
return next row;
的事情是,我不知道該怎麼做......插入statment normaly具有的語法:
INSERT INTO new_tab(id, name)
SELECT x.id, x.name
FROM y
但是這句法不適合這裏。沒有查詢從...中選擇行,這些行在循環中。
它也提供了其他語法值,請參閱http://www.w3schools.com/sql/sql_insert.asp – Bulat
它也是一樣的。使用INSERT INTO table_name(column1,column2,column3,...) VALUES(value1,value2,value3,...);'你需要指定'value1,value2,value3,...'不知道如何訪問thouse值... – avi
不需要函數或循環,只需使用:'insert into new_tab(id,name)select * from func3(..)'或者你想要'func1 ()'插入行**和**同時返回它們? –