Re: Fwd: Re: question - plpgsql and query on table given by variable - Mailing list pgsql-novice

From Michael Fuhr
Subject Re: Fwd: Re: question - plpgsql and query on table given by variable
Date
Msg-id 20050830031748.GA10456@winnie.fuhr.org
Whole thread Raw
In response to Fwd: Re: question - plpgsql and query on table given by variable  (" Jaromír Kamler" <kamler@centrum.cz>)
List 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 by date:

Previous
From: "Prasad dev"
Date:
Subject: Disabling Trigger
Next
From: "Lance Arlaus"
Date:
Subject: Re: triggers: how to check if a field changed?