【发布时间】:2016-02-15 11:16:46
【问题描述】:
我有一个函数可以检查 PostgreSQL 上是否存在表,使用以下代码:
CREATE OR REPLACE FUNCTION public.sp_table_exists(p_in_table_name character varying)
RETURNS boolean AS
$$
DECLARE QUERY_COUNT INTEGER DEFAULT 1;
QUERY_STRING VARCHAR(300);
BEGIN
QUERY_STRING := CONCAT('SELECT RELNAME FROM PG_CLASS WHERE RELNAME = ''',p_in_table_name,'''');
EXECUTE QUERY_STRING;
GET DIAGNOSTICS QUERY_COUNT = ROW_COUNT;
IF QUERY_COUNT > 0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;
$$ LANGUAGE plpgsql;
我正在尝试使用上述函数的输出来分配一个布尔值,但 PostgreSQL 不允许我这样做。
DECLARE DEBUG_ENABLED boolean DEFAULT FALSE;
DEBUG_ENABLED := PERFORM sp_table_exists('temp_table');
或
DEBUG_ENABLED := SELECT * FROM sp_table_exists('temp_table');
你能帮我解决这个问题吗?
【问题讨论】:
标签: postgresql postgresql-9.4 postgresql-9.5