在PostgreSQL中,当您在函数中遇到“关系不存在”错误时,通常是因为查询引用了不存在的表或视图
-- 错误的表名
SELECT * FROM "MyTable";
-- 正确的表名
SELECT * FROM mytable;
\dt
命令(在psql命令行工具中)或查询information_schema.tables
视图来检查表是否存在。-- 在psql命令行工具中检查表是否存在
\dt mytable;
-- 使用SQL查询检查表是否存在
SELECT * FROM information_schema.tables WHERE table_name = 'mytable';
SET search_path TO
命令更改当前搜索路径,或在查询中显式指定模式名称。-- 更改当前搜索路径
SET search_path TO myschema, public;
-- 在查询中显式指定模式名称
SELECT * FROM myschema.mytable;
EXECUTE
语句),请确保在执行之前正确构建SQL字符串。CREATE OR REPLACE FUNCTION get_data() RETURNS TABLE(id INTEGER, name TEXT) AS $$
BEGIN
RETURN QUERY EXECUTE 'SELECT id, name FROM mytable';
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION get_data() RETURNS TABLE(id INTEGER, name TEXT) AS $$
BEGIN
CREATE TEMP TABLE temp_table AS SELECT * FROM mytable;
RETURN QUERY SELECT id, name FROM temp_table;
DROP TABLE tempLink;
END;
$$ LANGUAGE pltheid;
领取专属 10元无门槛券
手把手带您无忧上云