See our FAQ about temporary tables: <H3 id="item4.19">4.19) Why do I get "relation with OID ##### does not exist" errors when accessing temporary tables in PL/PgSQL functions?</H3>
--------------------------------------------------------------------------- [EMAIL PROTECTED] wrote: > > The following bug has been logged online: > > Bug reference: 2124 > Logged by: > Email address: [EMAIL PROTECTED] > PostgreSQL version: 8.1.1-1 > Operating system: Windows > Description: Error "relation with OID ... does not exist" when using > temporary table in function. > Details: > > After running function proc_3 (described below) more than once error > "relation with OID ... does not exist" occures. > > First run of function proc_3() is OK but the second run always fails until > we recreate function proc_2(). > > Script to reproduce. > > -------------------------------------------------------- > > --DROP FUNCTION proc_1(); > > CREATE OR REPLACE FUNCTION proc_1() RETURNS int AS > $BODY$ > DECLARE > __nCount int; > BEGIN > SELECT INTO __nCount COUNT(*) FROM __tmp_xx; > return __nCount; > END; > $BODY$ > LANGUAGE 'plpgsql' VOLATILE; > > > --DROP FUNCTION proc_2(); > > CREATE OR REPLACE FUNCTION proc_2() RETURNS int AS > $BODY$ > DECLARE > __nCount int; > BEGIN > CREATE TEMPORARY TABLE __tmp_xx( > nId int PRIMARY KEY, > wstrName varchar(256) NOT NULL > ); > INSERT INTO __tmp_xx (nId, wstrName) VALUES (1, 'xx'); > __nCount := proc_1(); > DROP TABLE __tmp_xx; > return __nCount; > END > $BODY$ > LANGUAGE 'plpgsql' VOLATILE; > > > --DROP FUNCTION proc_3(); > > CREATE OR REPLACE FUNCTION proc_3() RETURNS int AS > $BODY$ > DECLARE > __nCount int; > BEGIN > __nCount = proc_2(); > --DELETE FROM t_res; > --INSERT INTO t_res(nId, nValue) VALUES(1, __nCount); > return __nCount; > END > $BODY$ > LANGUAGE 'plpgsql' VOLATILE; > > > SELECT * FROM proc_3(); > > SELECT * FROM proc_3(); > > -------------------------------------------------------- > > ---------------------------(end of broadcast)--------------------------- > TIP 6: explain analyze is your friend > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (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 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq