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

From: Michael Fuhr <mike(at)fuhr(dot)org>
To: Jaromír Kamler <kamler(at)centrum(dot)cz>
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: Fwd: Re: question - plpgsql and query on table given by variable
Date: 2005-08-30 03:17:48
Message-ID: 20050830031748.GA10456@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Lance Arlaus 2005-08-30 04:25:36 Re: triggers: how to check if a field changed?
Previous Message Prasad dev 2005-08-30 03:00:30 Disabling Trigger