Re: Fwd: Re: question - plpgsql and query on table given by variable

Поиск
Список
Период
Сортировка
От Michael Fuhr
Тема Re: Fwd: Re: question - plpgsql and query on table given by variable
Дата
Msg-id 20050830031748.GA10456@winnie.fuhr.org
обсуждение исходный текст
Ответ на Fwd: Re: question - plpgsql and query on table given by variable  (" Jaromír Kamler" <kamler@centrum.cz>)
Список pgsql-novice
On Mon, Aug 29, 2005 at 11:13:15AM +0200,  Jaromír Kamler wrote:
>
>  EXECUTE 'PERFORM AsText(the_geom) FROM ' || a || ';';

PERFORM is a PL/pgSQL command that isn't valid in an EXECUTE context.
Also, be careful when interpolating variables into an EXECUTE command;
see the comments about using quote_ident() and quote_literal() in
the "Executing Dynamic Commands" documentation.  And the command
string doesn't need a terminating semicolon.

>  IF FOUND THEN
>  RETURN 'yes';
>  END IF;
>  IF FOUND THEN
>  RETURN 'no';
>  END IF;

Do you mean IF NOT FOUND?  Also, using ELSIF (or ELSEIF) might be
more readable.

> SELECT n('b');
> ERROR: syntax error at or near "PERFORM" at character 1
> QUERY: PERFORM AsText(the_geom) FROM b;
> CONTEXT: PL/pgSQL function "n" line 7 at execute statement
> LINE 1: PERFORM AsText(the_geom) FROM b;
>
> When I use PPERFORM in normal way, it works. How I can reach some
> results from the query executed by EXECUTE?

The "Executing Dynamic Commands" documentation mentions a couple
of ways (FOR-IN-EXECUTE and OPEN-FOR-EXECUTE).

--
Michael Fuhr

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

Предыдущее
От: "Prasad dev"
Дата:
Сообщение: Disabling Trigger
Следующее
От: "Lance Arlaus"
Дата:
Сообщение: Re: triggers: how to check if a field changed?