Re: table name in pl/pgsql

From: CoL <col(at)mportal(dot)hu>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: table name in pl/pgsql
Date: 2004-11-25 15:30:07
Message-ID: co4tpj$hf$1@news.hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

hi,

ON.KG wrote:
> New question:
>
> i have tables like
> table_20041124,
> table_20041125,
> etc...
>
> i'm trying to make function (for example):
> =====================================
> CREATE FUNCTION get_count(text, text)
> RETURNS int2 AS '
> DECLARE
> cnt int4;
> BEGIN
> SELECT INTO cnt COUNT(*)
> FROM table_$1 -- That doesn't work
> WHERE key = $2;
>
> RETURN cnt;
> END;'
> LANGUAGE 'plpgsql';
> =====================================
>
> call this function by:
>
> =====================================
> SELECT get_count("20041124", "something");
> =====================================
>
> string in funstion - FROM table_$1
>
> how could i get a final correct table name here?

You can use execute for dynamic sql.
CREATE FUNCTION get_count(text, text) RETURNS int2 AS '
declare rec record;
begin
for rec in execute ''select COUNT(*) as num from table_''||$1||''
where key=''''||$2'''' '';
loop
return rec.num;
end loop;
return;
end;

PS: anyway, you want returns int2 , but you declared int4 :)

C.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tino Wildenhain 2004-11-25 15:46:04 Re: table name in pl/pgsql
Previous Message Richard Huxton 2004-11-25 15:25:26 Re: table name in pl/pgsql