我���望您能在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)
可以生效而第二个却不行?如何解决这个问题?
select * from 'foo'::table
的东西。 - Time Killer