我想在 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 "."
下面是我改为 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...
可能,quote_ident($1)
工作,因为没有 where quote_ident($1).id=1
部分我得到 1
,这意味着某些东西被选中。为什么第一个 quote_ident($1)
和第二个 quote_ident($1)
不能同时工作?这个问题怎么解决呢?