how to pass tablename to a function

Started by A L.over 11 years ago2 messagesgeneral
Jump to latest
#1A L.
e_toner@hotmail.com

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?

thanks

Alec

--
View this message in context: http://postgresql.1045698.n5.nabble.com/how-to-pass-tablename-to-a-function-tp5817861.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#2Igor Neyman
ineyman@perceptron.com
In reply to: A L. (#1)
Re: how to pass tablename to a function

-----Original Message-----
From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of alecinvan
Sent: Thursday, September 04, 2014 6:28 PM
To: pgsql-general@postgresql.org
Subject: [GENERAL] how to pass tablename to a function

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?

thanks

Alec

You can't.
You have to use dynamic sql (EXECUTE).

Regards,
Igor Neyman

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general