Need help with generic query

From: David Abrahams <dave(at)boost-consulting(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Need help with generic query
Date: 2007-06-20 10:55:06
Message-ID: 1182336906.481784.133570@k79g2000hse.googlegroups.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Background: I have a number of schemas all of which contain a "ticket"
table having the same columns. The goal of the function xticket1
below is to collect all ticket rows satisfying some condition from all
those schemas, and additionally label each one by adding a new column
containing the name of the schema it belongs to.

-- Create a temporary table with the right layout
-- for our function's return type (know a better way?)
CREATE TEMP TABLE tix ( LIKE master.ticket );
ALTER TABLE tix ADD COLUMN schema_name text;

CREATE OR REPLACE FUNCTION xticket1(condition TEXT)
RETURNS SETOF tix
AS
$BODY$
DECLARE
scm RECORD;
result RECORD;
BEGIN
FOR scm IN SELECT schema_name FROM public.instance_defs LOOP
FOR result IN EXECUTE 'SELECT '
|| scm.schema_name || '.ticket.*,'
|| ' ''' || scm.schema_name || ''' AS schema_name'
|| ' FROM ' || scm.schema_name || '.ticket'
|| ' WHERE ' || condition
LOOP
RETURN NEXT result;
END LOOP;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE plpgsql;

The problem is, psql is complaining:

ERROR: wrong record type supplied in RETURN NEXT

I don't know why, and I don't know how to get psql to give me useful
debugging info that would help me discover why. Can someone help?

Thanks

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Enrico Sirola 2007-06-20 10:57:55 copying indexes and f.keys from a template table
Previous Message Sean Davis 2007-06-20 10:49:41 Re: [NOVICE] Recursive relationship - preventing cross-index entries.