Je veux passer un nom de table comme paramètre dans une fonction Postgres. J'ai essayé ce code :
CREATE OR REPLACE FUNCTION some_f(param character varying) RETURNS integer
AS $$
BEGIN
IF EXISTS (select * from quote_ident($1) where quote_ident($1).id=1) THEN
return 1;
END IF;
return 0;
END;
$$ LANGUAGE plpgsql;
select some_f('table_name');
Et j'ai eu ça :
ERROR: syntax error at or near "."
LINE 4: ...elect * from quote_ident($1) where quote_ident($1).id=1)...
^
********** Error **********
ERROR: syntax error at or near "."
Et voici l'erreur que j'ai obtenue lorsque j'ai changé pour ceci select * from quote_ident($1) tab where tab.id=1
:
ERROR: column tab.id does not exist
LINE 1: ...T EXISTS (select * from quote_ident($1) tab where tab.id...
Probablement, quote_ident($1)
fonctionne, car sans le where quote_ident($1).id=1
partie que j'obtiens 1
ce qui signifie que quelque chose est sélectionné. Pourquoi le premier quote_ident($1)
travail et le second pas en même temps ? Et comment résoudre ce problème ?