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注入