postgresql - 表名作为 PostgreSQL 函数参数/错误 : column ".." does not exist

标签 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 ,但其他建议的解决方案(串联,格式())对我也不起作用。有什么想法吗?

最佳答案

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

关于postgresql - 表名作为 PostgreSQL 函数参数/错误 : column ".." does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209010/

相关文章:

php - INSERT 如果不存在,否则返回 id

ruby-on-rails - 在 Mac 上安装 Postgres gem 时出错

postgresql - 错误 : column "semester_id" is of type integer but expression is of type boolean

postgresql - ALTER FUNCTION 的参数默认值?

PostgreSQL 逻辑复制 - 创建订阅挂起

postgresql - 列必须出现在 GROUP BY 子句中或在聚合函数中使用

sql - UPDATE ... FROM ... 内部触发函数未按预期工作?

sql - 确保日期过去的 PostgreSQL 触发器/函数

postgresql pg_notify 请求中没有对结果数据的赋值

MySQL 和 PostgreSQL 行子查询运算符