Commit / Rollback in PL/pgSQL ?

Поиск
Список
Период
Сортировка
От Michael Kleiser
Тема Commit / Rollback in PL/pgSQL ?
Дата
Msg-id 416D4D60.6070005@webde-ag.de
обсуждение исходный текст
Ответы Re: Commit / Rollback in PL/pgSQL ?
Список pgsql-general
I found on
http://www.physiol.ox.ac.uk/Computing/Online_Documentation/postgresql/plpgsql-porting.html
that it is not poosible to use start or end a transaction in plpgsl.

I tried to create a plplsql-function on PostgreSQL 8.0 beta 3
I can comile

CREATE OR REPLACE FUNCTION insert_many_commit( integer ) RETURNS void AS '
DECLARE
   counter INTEGER := $1;
BEGIN
   WHILE counter > 0 LOOP
     INSERT INTO testtab (id, modification_date, description )
         VALUES ( NEXTVAL(''seq_testtab''),now(), ''Eintrag von insert_many() '' || counter );
     COMMIT;
     counter := counter-1;
   END LOOP;
   RETURN;
END;
' LANGUAGE 'plpgsql';

So I think it's possible to have COMMIT / ROLLBACK in PLPgSQL

But I can't execute this funktion this way:
# select insert_many_commit(1000);
ERROR:  SPI_execute_plan failed executing query "COMMIT": SPI_ERROR_TRANSACTION


Is there an other way to execute tis function ?
If the latter, is it poosible in other languages like PL/Python or PL/Perl ?

regards
Michael Kleiser

В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: could not access status of transaction 4244329
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: LISTEN/NOTIFY for lightweight replication