postgresql将表引用传递给函数

postgresql将表引用传递给函数,postgresql,reference,Postgresql,Reference,如何将表引用传递给函数?我尝试了以下代码,但出现错误: CREATE OR REPLACE FUNCTION merge_(text,n VARCHAR(32),s VARCHAR(32),val int) RETURNS VOID AS $$ DECLARE _table ALIAS FOR $1; BEGIN RAISE NOTICE '_table = %', _table; ... SELECT merge_('testtable','h','a',5000

如何将表引用传递给函数?我尝试了以下代码,但出现错误:

CREATE OR REPLACE FUNCTION merge_(text,n VARCHAR(32),s VARCHAR(32),val int) RETURNS VOID AS 
$$
  DECLARE
    _table ALIAS FOR $1;
  BEGIN
    RAISE NOTICE '_table = %', _table;
...


SELECT merge_('testtable','h','a',50000);
注意:_table=testtable

这很好,但当我尝试执行命令时,会出现错误:

CREATE OR REPLACE FUNCTION merge_(text,n VARCHAR(32),s VARCHAR(32),val int) RETURNS VOID AS 
$$
 DECLARE
    _table ALIAS FOR $1;
 BEGIN
    UPDATE _table ....
错误:关系“\u表”不存在


动态命令中的变量替换必须使用
EXECUTE
命令:

EXECUTE 'UPDATE ' || quote_ident(_table) || ' ....';
你可以查看文件

无论在何处使用参数将关系或列名插入动态命令,都应使用
quote_ident()
函数。其他文本元素(例如,
,其中column\u name=parameter\u 2
)应使用
quote\u literal()
函数插入。这两个函数都有助于避免讨厌的冲突(如双引号保留字)并防止SQL注入