У меня есть следующие 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
Постулаты в петлю, так что цикл будет работать, как сейчас, но также все строки будут сохранены в таблице.
for row in execute sqls LOOP
INSERT INTO TABLE new_tab(id, name)
return next row;
дело в том, что я не знаю, как сделать это ... вставка Постулаты имеет нормально синтаксис:
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, ...' i don Посмотрите, как я могу получить доступ к значениям thouse ... – avi
Нет необходимости в функции или в цикле, просто используйте: 'insert into new_tab (id, name) выберите * from func3 (..)' Или вы хотите, чтобы ваш 'func1() ', чтобы вставлять строки ** и ** возвращать их в одно и то же время? –