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
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 |