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.

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to