Hi All,

PostgreSQL 7.4.5

assume this script:

---
create table test_table
(
 id serial,
 test_value text
) without oids;

insert into test_table
(test_value)
values ('A');

insert into test_table
(test_value)
values ('B');

insert into test_table
(test_value)
values ('C');

insert into test_table
(test_value)
values ('D');

CREATE OR REPLACE FUNCTION test_with_transaction()
  RETURNS text AS
'declare my_test_record record;
declare my_return_value text;

begin
  my_return_value := '''';
  start transaction;
    for my_test_record in select * from test_table
    loop
      my_return_value := my_return_value || my_test_record.test_value;
    end loop;
    return my_return_value;
  commit;
end;'
  LANGUAGE 'plpgsql' VOLATILE;

CREATE OR REPLACE FUNCTION test_without_transaction()
  RETURNS text AS
'declare my_test_record record;
declare my_return_value text;
begin
  my_return_value := '''';
  for my_test_record in select * from test_table
  loop
    my_return_value := my_return_value || my_test_record.test_value;
  end loop;
    return my_return_value;
end;'
  LANGUAGE 'plpgsql' VOLATILE;
---

Why does select test_without_transaction();
return this info:
"ABCD" (as should be)

and select test_with_transaction();
returns this error?

ERROR:  SPI_prepare() failed on "start transaction"
CONTEXT:  PL/pgSQL function "test_with_transaction" line 6 at SQL
statement

I've been investigating the matter in the doc I have, but to no avail.
google was not helpful either.

any suggestion? is this a bug? or the bug resides in my head?

regards,

Riccardo


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to