You are passing the literal value "table_name" as the table, and "column_name" as the column. You need to concatenate the substituted values onto the string with the || operator:
return execute 'select exists(select * from ' || quote_ident(table_name) || ' where ' || quote_ident(table_column) || ' = ' || id || ')'; (not tested) On Thu, Jul 4, 2013 at 11:53 AM, giozh <gi...@yahoo.it> wrote: > i've write this function that search if inside a specified table there's a > specified value: > > CREATE FUNCTION check_if_if_exist(id INTEGER, table_name character(50), > table_column character(20) ) RETURNS BOOLEAN AS $$ > > BEGIN > RETURN EXECUTE 'SELECT EXISTS(SELECT * FROM table_name WHERE > table_column = > id)'; > END; > > $$ LANGUAGE plpgsql > > but when i try to call it i always receive an error and the function will > not call. where is the problem? > > > > -- > View this message in context: > http://postgresql.1045698.n5.nabble.com/unable-to-call-a-function-tp5762590.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 > -- Moshe Jacobson Nead Werx, Inc. | Manager of Systems Engineering 2323 Cumberland Parkway, Suite 201 | Atlanta, GA 30339 mo...@neadwerx.com | www.neadwerx.com "Quality is not an act, it is a habit." -- Aristotle