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

Поиск
Список
Период
Сортировка
От jack
Тема call the same pl/pgsql procedure twice in the same connection session
Дата
Msg-id 00ef01c1d3e8$81eb27f0$1400a8c0@jac
обсуждение исходный текст
Ответы Re: call the same pl/pgsql procedure twice in the same connection  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: "jack"
Дата:
Сообщение: Re: About temporary table
Следующее
От: "Ivan Babikov"
Дата:
Сообщение: Re: Recursive functions aren't possible, are they?