Re: how to pass tablename to a function

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: "A L(dot)" <e_toner(at)hotmail(dot)com>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: how to pass tablename to a function
Date: 2014-09-04 23:57:09
Message-ID: 5408FC55.5070401@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 09/04/2014 04:42 PM, A L. wrote:
> Hi, All
>
> I like to pass the tablename to function but not using execute clause,
> here is my script
>
> CREATE OR REPLACE FUNCTION functions.pgsql_event_unpack_batch(IN _tbl
> text, IN jobid bigint, IN jobtime timestamp with time zone, IN startid
> bigint, IN stopid bigint)
> RETURNS TABLE(events bigint, errors bigint[]) AS
> $BODY$
> BEGIN
>
> RETURN QUERY
> WITH
> unpacking (raw_id, time, userid, eventtype, pagename, userhost,
> application, status, error)
> AS (
> select
> id as raw_id,
> (up).time,
> (up).userid,
> coalesce((up).eventtype, ''),
> coalesce((up).pagename, ''),
> (up).userhostaddress as userhost,
> coalesce((up).application, ''),
> (up).status,
> (up).error
> from(
> select id,
> functions.python_events_unpack(event_object) up
> from _tbl
> where id between startid and stopid
> ) a
> where (up).userid is not NULL
> )
>
>
> I want to pass the _tbl to the select query integrated in the
> unpacking(), how can I make it?

Assuming you are using plpgsql, see here:

http://www.postgresql.org/docs/9.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

or use a language like plpythonu.

>
> thanks
>
> Alec

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message David G Johnston 2014-09-05 00:23:28 Re: how to pass tablename to a function
Previous Message A L. 2014-09-04 23:42:45 how to pass tablename to a function