Using Temporary Tables in postgres functions - Mailing list pgsql-sql

From Mario Splivalo
Subject Using Temporary Tables in postgres functions
Date
Msg-id 1169735954.31872.38.camel@localhost.localdomain
Whole thread Raw
Responses Re: Using Temporary Tables in postgres functions  (Andrew Sullivan <ajs@crankycanuck.ca>)
Re: Using Temporary Tables in postgres functions  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
Re: Using Temporary Tables in postgres functions  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
When I try to use TEMPORARY TABLE within postgres functions (using 'sql'
as a function language), I can't because postgres can't find that
temporary table. Consider this example:

CREATE FUNCTION func1() RETURNS SETOF v_messages_full AS $BODY$
CREATE TEMPORARY TABLE tmpTbl
AS
SELECT message_id
FROM cached_messages
WHERE billing_status = 2;


UPDATE cached_messages SET billing_status = 1 WHERE message_id IN
(SELECT message_id FROM tmpTbl);

SELECT*
FROMv_messages_full
WHEREmessage_id IN (SELECT message_id FROM tmpTbl);
$BODY$ LANGUAGE 'sql' VOLATILE SECURITY DEFINER;

When I try to execute above CREATE FUNCTION statement postgres gives me
this:
ERROR:  relation "tmptbl" does not exist
CONTEXT:  SQL function "func1"

If I rewrite func1() using 'plpgsq' I have no troubles creating
temporary tables, I just need to use EXEC when referencing to those
temporary tables (which is cumbersome, but there it is).

Am I doing something wrong here, or there is no way of using temporary
tables within 'sql' written functions?
Mike




pgsql-sql by date:

Previous
From: Andrew Sullivan
Date:
Subject: Re: select based on multi-column primary keys
Next
From: Andrew Sullivan
Date:
Subject: Re: Using Temporary Tables in postgres functions