postgresql - 在 to_regclass() 函数中使用动态创建的名称

标签 postgresql plpgsql postgresql-9.5

我已经动态创建了表名,我需要检查这个表是否存在,为此我这样做:

....
SELECT to_regclass('public.tableprefix_'||variable_name) INTO table_exists;
IF table_exists IS NULL THEN 
    RETURN 'NOT EXISTS';
ELSE
    RETURN 'EXISTS';
END IF;
....

这给出错误 function to_regclass(text) does not exist

然后我尝试显式类型转换:

SELECT to_regclass('public.tableprefix_'||variable_name::regclass) INTO table_exists;

但同样的错误,我哪里错了?如何正确执行此操作?

最佳答案

\df to_regclass

postgres=# \df to_regclass 
                              List of functions
┌────────────┬─────────────┬──────────────────┬─────────────────────┬────────┐
│   Schema   │    Name     │ Result data type │ Argument data types │  Type  │
├────────────┼─────────────┼──────────────────┼─────────────────────┼────────┤
│ pg_catalog │ to_regclass │ regclass         │ cstring             │ normal │
└────────────┴─────────────┴──────────────────┴─────────────────────┴────────┘
(1 row)

你必须使用 cast to cstring

关于postgresql - 在 to_regclass() 函数中使用动态创建的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33952892/

相关文章:

postgresql - Postgres.app 显示 "Running on Port 5432"但 psql 命令失败

postgresql - 排除约束 `EXCLUDE USING gist (c WITH &&)` 是什么意思?

regex - 正则表达式或 LIKE 模式的转义函数

postgresql - 如何测试给定的文本列是否是有效的 oid

postgresql - 将时间戳与纪元秒进行比较

java - postgresql jpa earth_distance 查询

sql - 选择多行作为数组

postgresql - 当pq_user中的valuntil值为NULL时,PostgreSQL用户密码多久会过期?

query-performance - 行级安全性,性能差

postgresql - 为什么我的 COMMIT 在 SELECT-only 事务之后使用 PostgreSQL 变慢?