Re: dynamic function question - Mailing list pgsql-general

From Stephan Szabo
Subject Re: dynamic function question
Date
Msg-id 20040604150245.Y32434@megazone.bigpanda.com
Whole thread Raw
In response to dynamic function question  ("Chris Ochs" <chris@paymentonline.com>)
List pgsql-general
On Fri, 4 Jun 2004, Chris Ochs wrote:

> What I would like to do is pass in the column name that is being queried
> against (cust_email) so it can be dynamic.   I tried the following but it
> always returns an empty set.
>
> CREATE OR REPLACE FUNCTION lookup_customer(varchar,varchar) RETURNS SETOF
> customer_rec AS
> '
> DECLARE
>    r RECORD;
>    in_string ALIAS FOR $1;
>    in_column ALIAS FOR $2;
> BEGIN
>    FOR r IN SELECT
> s_oid,mer_id,site_id,order_id,pymt_type,pymt_subtype,comp_name,f_name1,l_nam
> e1,f_name2,l_name2,address,city,state
> ,zipcode,phone,cust_email,country from customers where in_column ILIKE
> in_string LOOP

I think you're going to need to look at using FOR IN EXECUTE to do this
generating a query string, something like:

FOR r IN EXECUTE ''SELECT s_oid,mer_id,site_id,order_id,pymt_type,
pymt_subtype,comp_name,f_name1,l_name1,f_name2,l_name2,address,
city,state,zipcode,phone,cust_email,country from customers
where '' || in_column || '' ILIKE '' || in_string
LOOP

pgsql-general by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Building Thread-Safe on OS X
Next
From: Thomas Hallgren
Date:
Subject: Unable to use NNTP server