You have to use EXECUTE when creating a temp table in a function --- see
FAQ on it.

---------------------------------------------------------------------------

[EMAIL PROTECTED] wrote:
> John Duffy ([EMAIL PROTECTED]) reports a bug with a severity of 1
> The lower the number the more severe it is.
> 
> Short Description
> plpgsql function fails on second call
> 
> Long Description
> A function containing a left outer join declared to return a set works correctly 
> when first called. A second call to the function terminates with an error. If the 
> function is recreated the function then works correctly for the first call and then 
> fails on the second.
> 
> Sample Code
> createdb test
> 
> create table a (id integer, value integer)
> create table b (id integer, value integer)
> 
> insert into a (id, value) values (1,1)
> insert into a (id, value) values (2,2)
> insert into a (id, value) values (3,3)
> insert into b (id, value) values (1,1)
> insert into b (id, value) values (2,2)
> insert into b (id, value) values (3,3)
> 
> create type ab as (a integer, b integer)
> 
> createlang plpgsql test
> 
> create or replace function test() returns setof ab as '
> declare
>         row ab%ROWTYPE;
> begin
>         create temp table ab as
>         select a.value as a_value, b.value as b_value
>         from a left outer join b
>         on a.id = b.id;
> 
>         for row in select * from ab loop
>                 return next row;
>         end loop;
> 
>         drop table ab;
> 
>         return;
> end;
> ' language 'plpgsql';
> 
> test=# \i test-func.sql
> CREATE FUNCTION
> 
> test=# select * from test();
>  a | b
> ---+---
>  1 | 1
>  2 | 2
>  3 | 3
> (3 rows)
> 
> test=# select * from test();
> WARNING:  Error occurred while executing PL/pgSQL function test
> WARNING:  line 9 at for over select rows
> ERROR:  pg_class_aclcheck: relation 3759490 not found
> 
> 
> No file was uploaded with this report
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Reply via email to