call the same pl/pgsql procedure twice in the same connection session

From: "jack" <datactrl(at)tpg(dot)com(dot)au>
To: <pgsql-sql(at)postgresql(dot)org>
Subject: call the same pl/pgsql procedure twice in the same connection session
Date: 2002-03-25 10:33:29
Message-ID: 00ef01c1d3e8$81eb27f0$1400a8c0@jac
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I have a function with pl/pgSQL such as...
CREATE FUNCTION comp_userExp (TEXT) RETURNS INTEGER AS '
DECLARE
stUserName TEXT;
BEGIN
stUserName := 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

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message jack 2002-03-25 10:36:15 Re: About EXECUTE in pl/pgsql
Previous Message jack 2002-03-25 10:17:44 Re: About temporary table