I wrote:
> There are three problems with using PostgreSQL temporary tables:
>
> 1. PL/pgSQL will cache the OID of the temporary table that existed when
> it is first parsed, and when that temporary table is dropped and
> recreated later, despite having the same name and structure, you'll get
> an error like:
>
> ERROR: relation with OID 869140 does not exist
> CONTEXT: PL/pgSQL function "mytest" line 4 at select into variables
>
> The work-around is to use EXECUTE to build the query string at run-time.
I should point out that if you ensure that you create the temporary
table before invoking the function, the function gets parsed once
after the first invocation at the beginning of the session. So that,
in that instance, it would be okay.
Mike Mascari