Thread: For In Execute

For In Execute

From
Jason Davis
Date:
Hi all

I'm having some dramas getting a basic dynamic function to go, similar to
the one from Phillip Allen's posting from the other day...I'm attempting to
get the function to return the count(*) for a table name supplied to it:

CREATE FUNCTION test_func(text) RETURNS text AS '
DECLARE
  rec           record;
  retval        int;
  qry           text;
BEGIN
  qry:= ''SELECT COUNT(*) AS numrows FROM '' || $1 || '';'';
  FOR rec IN EXECUTE qry LOOP
    retval:= rec.numrows;
  END LOOP;
  RETURN retval;
END;
' LANGUAGE 'plpgsql';

The double quotes in the assignment to the qry variable are two single
quotes, if this is unclear. I get the following:

test=# select test_func('test_table');
NOTICE:  plpgsql: ERROR during compile of test_func near line 7
ERROR:  parse error at or near "EXECUTE"

After searching all the techdocs and the excellent Practical Postgresql and
other resources, I am still none the wiser...can anyone lend me a few brain
cells? I'm running 7.0.3.

cheers
Jason Davis


Re: For In Execute

From
Tom Lane
Date:
Jason Davis <jdavis@tassie.net.au> writes:
> ERROR:  parse error at or near "EXECUTE"

> I'm running 7.0.3.

Update.  EXECUTE is new in 7.1, IIRC.

            regards, tom lane