Ich habe die folgende Funktion erfolgreich kompiliert. Wenn ich select schema.funtion_name();
tun, wird die Funktion ausgeführt, aber es gibt keine in der Tabelle eingefügten Zeilen schema.table_insert
:plpgsql Funktion, die Daten nicht wie beabsichtigt einfügen
CREATE OR REPLACE FUNCTION schema.function_name()
RETURNS void AS
$BODY$
DECLARE cur_1 CURSOR FOR
Select col1 from schema.table1
union
select col1 from schema.table2
union
select col1 from schema.table3
union
select col1 from schema.table4;
BEGIN
FOR rec_i in cur_1 LOOP
insert into schema.table_insert (col1,col2,col3)
select col1,col2,col3
from schema.view
where col1=rec_i.col1
commit;
END LOOP;
END;
$BODY$
LANGUAGE plpgsql STABLE
Der Auswahl in Cursor cur_1 mehr als 900 000 Datensätze zurückgibt. Wenn ich die Insert-Anweisung separat für einen einzelnen Datensatz verwende, wird der Datensatz in die Tabelle eingefügt.
[So haben Sie Ihre Antwort?] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –