我想将表名作为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)
工作和第二个工作不能同时进行?以及如何解决?