EXECUTE USING problem - Mailing list pgsql-general

From Graham
Subject EXECUTE USING problem
Date
Msg-id 4EC25ED4.6090802@gpmd.co.uk
Whole thread Raw
Responses Re: EXECUTE USING problem  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: EXECUTE USING problem  (Raymond O'Donnell <rod@iol.ie>)
List pgsql-general
Using PG 9.0.3, I wish to dynamically reference a column in a table
passed into a PL/PgSQL function as follows:

-- A table with some values.
  DROP TABLE IF EXISTS table1;
  CREATE TABLE table1 (
      code INT,
      descr TEXT
  );

INSERT INTO table1 VALUES ('1','a');
INSERT INTO table1 VALUES ('2','b');

-- The function code.
DROP FUNCTION IF EXISTS foo (TEXT);
CREATE FUNCTION foo (tbl_name TEXT) RETURNS VOID

AS $$
DECLARE
     r RECORD;
     d TEXT;
BEGIN
     FOR r IN
     EXECUTE 'SELECT * FROM ' || tbl_name
     LOOP
     --SELECT r.descr INTO d; --IT WORK
     EXECUTE 'SELECT ($1)' || '.descr' INTO d USING r;     --DOES NOT WORK
     RAISE NOTICE '%', d;
END LOOP;

END;
$$ LANGUAGE plpgsql STRICT;

-- Call foo function on table1
SELECT foo('table1');


Another post suggested EXECUTE 'SELECT $1::text::table1.descr' INTO d
USING r; but this does not work either. Can this be achieved currently?
what would be the syntax ?

Thanks in advance.

pgsql-general by date:

Previous
From: Twaha Daudi
Date:
Subject: PostgresSQL 8.4 to 9.0 on Windows 7
Next
From: Venkat Balaji
Date:
Subject: Re: : Postgres installation error on CentOS