Temat: Cursor Postgresql
CREATE OR REPLACE FUNCTION uzycie_kursora()
RETURNS integer AS
$BODY$
DECLARE
c_laduj_dane CURSOR
IS
Select *
from lgpelt_temp.temp_tab_przyklad_use_cursor;
T_laduj_dane lgpelt_temp.temp_tab_przyklad_use_cursor%ROWTYPE; BEGIN
OPEN c_laduj_dane;
LOOP
FETCH c_laduj_dane INTO T_laduj_dane;
EXIT WHEN NOT FOUND;
INSERT INTO tab_przyklad_use_cursor(pk_id, tytul, data_utw)
VALUES(T_laduj_dane.pk_id, T_laduj_dane.tytul, (SELECT CURRENT_TIMESTAMP) );
END LOOP;
return 0;
EXCEPTION
WHEN unique_violation THEN
INSERT INTO exception_tab_przyklad_use(pk_id, tytul, data_utw, komunikat, timestamp)
VALUES(T_laduj_dane.pk_id, T_laduj_dane.tytul, T_laduj_dane.data_utw, 'unique_violation',(SELECT CURRENT_TIMESTAMP) );
RETURN 1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
ALTER FUNCTION uzycie_kursora() OWNER TO lgpelt;