Имя таблицы как параметр функции PostgreSQL

Я хочу передать имя таблицы в качестве параметра в функции Postgres. Я пробовал этот код :

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');

И я получил это:

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 "."

И вот ошибка, которую я получил при изменении на это выберите * из вкладки quote_ident($1), где tab.id=1:

ERROR:  column tab.id does not exist
LINE 1: ...T EXISTS (select * from quote_ident($1) tab where tab.id...

Вероятно, quote_ident($1)работает, потому что без части where quote_ident($1).id=1я получаю 1, что означает, что что-то выбрано. quote_ident($1)работают, а второй нет одновременно? И как это можно решить?

69
задан Erwin Brandstetter 18 November 2012 в 12:46
поделиться