我已经动态创建了表名,我需要检查这个表是否存在,为此我这样做:
....
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/