临时表postgresql函数

临时表postgresql函数,第1张

概述我无法找到创建(和使用)表的语法的明确解释,仅用于函数的内部计算.请问有人给我一个语法例吗? 从我发现的,我尝试了这个(在temp_table之前有和没有@): CREATE FUNCTION test.myfunction()RETURNS SETOF test.out_tableAS $$DECLARE @temp_table TABLE( id int, 我无法找到创建(和使用)表的语法的明确解释,仅用于函数的内部计算.请问有人给我一个语法例吗?

从我发现的,我尝试了这个(在temp_table之前有和没有@):

CREATE FUNCTION test.myfunction()RETURNS SetoF test.out_tableAS $$DECLARE @temp_table table(         ID int,value text )BEGIN INSERT INTO @temp_table         SELECT ID,value        FROM test.another_table; INSERT INTO test.out_table        SELECT ID,value        FROM @temp_table;RETURN END$$LANGUAGE sql;

我明白了:

ERROR: Syntax error at or near “DECLARE”
liNE 5: DECLARE @temp_table table

我也试过建议here的CREATE table方法,这样:

CREATE FUNCTION test.myfunction()RETURNS SetoF test.out_tableAS $$    CREATE table temp_table AS        SELECT ID,value        FROM test.another_table;    INSERT INTO test.out_table        SELECT ID,value        FROM temp_table;$$LANGUAGE sql;

我得到了这个:

ERROR: relation “temp_table ” does not exist
liNE 11: FROM temp_table

(显然,我知道temp_table对于我在上面的代码中所做的事情不是必需的,但那不是重点:) =>我想了解让它工作的语法)

创建临时表的适当语法是
create temp table...

但是你必须确保在现有函数出现之前删除临时表.另外,我建议使用这种语法:

CREATE TEMP table IF NOT EXISTS temp_table AS    SELECT ID,value    FROM test.another_table;

因此你的功能将是这样的:

CREATE FUNCTION test.myfunction()RETURNS SetoF test.out_tableAS $$    CREATE TEMP table IF NOT EXISTS temp_table AS        SELECT ID,value        FROM temp_table;DROP table temp_table;$$LANGUAGE sql;

但如果我能这么善良,我想重写这个功能,这样更正确:

CREATE FUNCTION test.myfunction()RETURNS table (ID int,value varchar) -- change your datatype as neededAS $$BEGIN;CREATE TEMP table IF NOT EXISTS temp_table AS    SELECT ID,value    FROM test.another_table;INSERT INTO test.out_table    SELECT ID,value    FROM temp_table;DROP table temp_table;RETURN query SELECT ID,valuefrom temp_table;END;$$LANGUAGE plpgsql;

未测试;如果失败,请告诉我.

总结

以上是内存溢出为你收集整理的临时表postgresql函数全部内容,希望文章能够帮你解决临时表postgresql函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存