【发布时间】:2021-09-04 00:36:04
【问题描述】:
我是 PostgreSQL 新手,我想知道为什么我的临时表在返回不同于返回查询后没有被删除。
我可以多次执行此函数而不会出现“表已存在”错误。
CREATE OR REPLACE FUNCTION test_table()
RETURNS TABLE (response JSON)
AS $$
BEGIN
CREATE TEMP TABLE temp_test_table AS SELECT * FROM Users;
RETURN QUERY SELECT '{"name": "Moises"}'::JSON;
DROP TABLE temp_test_table;
END; $$
LANGUAGE 'plpgsql';
但在这种情况下,第一次执行后,我收到“错误:关系“temp_test_json”已经存在”。
CREATE OR REPLACE FUNCTION test_json()
RETURNS JSON
AS $$
BEGIN
CREATE TEMP TABLE temp_test_json AS SELECT * FROM Users;
RETURN '{"name": "Moises"}'::JSON;
DROP TABLE temp_test_json;
END; $$
LANGUAGE 'plpgsql';
return query 或 just return 如何影响临时表被删除?
【问题讨论】: