Re: Bug #710: Fail To Create/Drop Temporary Table IN PL/PGSQL

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: Bug #710: Fail To Create/Drop Temporary Table IN PL/PGSQL
Дата
Msg-id 20020711195907.V953-100000@megazone23.bigpanda.com
обсуждение исходный текст
Ответ на Bug #710: Fail To Create/Drop Temporary Table IN PL/PGSQL  (pgsql-bugs@postgresql.org)
Список pgsql-bugs
On Thu, 11 Jul 2002 pgsql-bugs@postgresql.org wrote:

> CNLIOU (cnliou@eurosport.com) reports a bug with a severity of 2
> The lower the number the more severe it is.
>
> Short Description
> Fail To Create/Drop Temporary Table IN PL/PGSQL
>
> Long Description
> Hi!
>
> In TODO list, it reads in sub section
>
> "Fix problems with complex temporary table creation/destruction
> without using PL/PgSQL EXECUTE, needs cache prevention/invalidation"
>
> in section "SERVER-SIDE LANGUAGES".
>
> According to this statement, I am in the impression that I can
> create/destruct temporary table with "execute" statement, but actually
> I can't.
>
> Perhaps this can be added to TODO list, too.
>
> Also, being unable to use temporary table in PL/PGSQL, I can not
> proceed working on part of my project.

You need to use EXECUTE on all statements dealing with the table
you are creating and dropping, but there is an issue that I don't
know of a direct way to select into a field with EXECUTE apart from
what I do below.

CREATE OR REPLACE FUNCTION test() RETURNS BOOLEAN AS '
DECLARE
  n INTEGER;
  r RECORD;
BEGIN
  EXECUTE ''CREATE TEMP TABLE temp1 (MyField INTEGER)'';
  EXECUTE ''INSERT INTO temp1 VALUES(8);'';

  FOR r IN EXECUTE ''SELECT MyField FROM temp1 LIMIT 1'' LOOP
   n := r.MyField;
  END LOOP;
  RAISE NOTICE ''%'',n;

  EXECUTE ''DROP TABLE temp1'';
  RETURN TRUE;
END;' LANGUAGE 'plpgsql';

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: 7.2.1 backend crash (convert_string_datum, locale)
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: 7.2.1 backend crash (convert_string_datum, locale)