call the same pl/pgsql procedure twice in the same connection session - Mailing list pgsql-sql

From jack
Subject call the same pl/pgsql procedure twice in the same connection session
Date
Msg-id 00ef01c1d3e8$81eb27f0$1400a8c0@jac
Whole thread Raw
Responses Re: call the same pl/pgsql procedure twice in the same connection  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-sql
I have a function with pl/pgSQL such as...
CREATE FUNCTION comp_userExp (TEXT) RETURNS INTEGER  AS '
DECLAREstUserName TEXT;
BEGINstUserName := upper($1);
CREATE TEMP TABLE comuser AS SELECT * FROM comt_user1 WHERE userName=stUserName;
CREATE TEMP TABLE comUser1 AS SELECT a.userName FROM comt_user2 a, comuser b WHERE a.userName = b.userName ORDER BY
b.userName;
CREATE TEMP TABLE comUser2 AS SELECT a.userName FROM comt_user3 a, comuser b WHERE a.userName = b.userName ORDER BY
b.userName;
DROP Table comuser,comuser1,comuser2;
RETURN 0;

END;' LANGUAGE 'PLPGSQL';

This function can't run twice in the same connection session. After tracing
error, the reason is because 2nd and 3rd SQL refer to table comuser. It will
cause "can't find relation number xxxxx". I think ,after first run, the
procedure just use relation number to access table, while actually table was
dropped and create again with a different relation number on the 2nd time.
If I disconnect database, and re-connect again, it won't cuase any problem.
If don't want to disconnect and connect, is there any way to fix the
problem?

JACK
JACK



pgsql-sql by date:

Previous
From: "jack"
Date:
Subject: Re: About temporary table
Next
From: "Ivan Babikov"
Date:
Subject: Re: Recursive functions aren't possible, are they?