表名为PostgreSQL函数参数/ ERROR:列" .."不存在

时间:2016-07-05 17:10:08

标签: postgresql plpgsql

我是pgsql的新手。我只想在pgsql中使用表名作为函数参数。

CREATE OR REPLACE FUNCTION user_test_table_name_as_input (table_name text)
RETURNS VOID 
LANGUAGE plpgsql
AS $$
DECLARE
    i int;
BEGIN
    FOR i IN EXECUTE 'SELECT DISTINCT category FROM' || quote_ident(table_name)
    LOOP
    RAISE NOTICE '%', i;
    END LOOP;
END
$$

当我尝试使用此功能时......

SELECT user_test_table_name_as_input (table_name);

...我收到此错误:

ERROR: column "table_name" does not exist
SQL state: 42703

我读了相关的主题,比如Table name as a PostgreSQL function parameter,但是其他提议的解决方案(Concatenation,format())对我来说都不适用。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

'表名'需要引号作为存储过程调用的参数 - 它的文本。