我正在尝试在Postgresql的存储函数中创建一个临时表。我使用的语言是“ plpgsql”。
当我运行存储的函数时,它会抛出一个SQL Error [42P01].
完全错误
:“查询执行失败。 原因:
SQL错误[42P01]:错误:关系“ temp_table”确实存在。
不存在”
CREATE OR REPLACE FUNCTION public.sp_str_dsl_lp_ung(x int8)
RETURNS integer
LANGUAGE plpgsql volatile
AS $function$
declare
--variables
variab int :=0;
begin
CREATE temporary TABLE temp_table (a int8, b int8) ;
insert into temp_table (a,b) select (a,b) from existing_table;
end
$function$
我想创建一个临时表来临时存储一些记录。
答案 0 :(得分:0)
您的代码问题很少
您已将函数定义为stable
,根据
禁止使用documentation,执行时会收到错误消息。
错误:非易失性函数中不允许创建表
要解决此问题,必须将其更改为VOLATILE
insert into temp_table (a,b) select (a,b)
不起作用,因为
括号内的列表示您将它们视为
record
,而不是单个列。修复这两个问题,您的功能应该可以正常工作。
CREATE OR REPLACE FUNCTION sp_str_dsl_lp_ung(color smallint,
lpcount integer, update_userid character varying, OUT lp integer)
RETURNS integer
LANGUAGE plpgsql volatile
AS $function$
declare
--variables
variab int :=0;
begin
CREATE temporary TABLE temp_table (a int8, b int8) ;
insert into temp_table (a,b) select a,b from existing_table;
end
$function$