PostgreSQL循环在访问嵌套函数生成的结果表时出错

PostgreSQL循环在访问嵌套函数生成的结果表时出错,sql,postgresql,loops,Sql,Postgresql,Loops,我有以下情况,当调用嵌套的函数my\u other\u function()时,从循环的第一部分生成的\u my\u other\u函数生成的表中检索数据时,会生成OID错误。如何解决这个问题 函数function my_other_function()生成一个表,其中只有一行数据和7列,因此可以以其他方式存储或返回此结果吗?如果没有提交,表就不存在,我是否会收到错误 函数my\u other\u function()自身工作正常 CREATE OR REPLACE FUNCTION my_fu

我有以下情况,当调用嵌套的
函数my\u other\u function()
时,从循环的第一部分生成的\u my\u other\u函数生成的表
中检索数据时,会生成OID错误。如何解决这个问题

函数
function my_other_function()
生成一个表,其中只有一行数据和7列,因此可以以其他方式存储或返回此结果吗?如果没有提交,表就不存在,我是否会收到错误

函数my\u other\u function()
自身工作正常

CREATE OR REPLACE FUNCTION my_function() RETURNS varchar AS  $$
    DECLARE 
        row_data RECORD;
        helper int;
    BEGIN 
        EXECUTE '
            DROP TABLE IF EXISTS my_table_loop_result;
        ';
        EXECUTE '
            CREATE TABLE my_table_loop_result (
                var1 varchar, var2 varchar, var3 varchar, var4 int, 
                var5 varchar, var6 varchar, var7 int)
        ';

        FOR row_data IN SELECT var_x1, var_x2 FROM my_table_too
        LOOP
                SELECT my_other_function(row_data.var_x1, row_data.var_x2) INTO helper; --Returns "1" if OK    

                INSERT INTO my_table_loop_result(var1,var2,var3,var4,var5,var6.var7)
                SELECT 
                    var1,var2,var3,var4,var5,var6,var7
                FROM table_generated_by_my_other_function --OID ERROR!
                WHERE var1 = row_data.var1;
        END LOOP;
    RETURN 1;
    END;
$$ LANGUAGE plpgsql;

8.2已经过时了-在这个版本中,您不应该删除临时表

PlpgSQL使用准备好的语句,其中包含引用相关表的执行计划。删除表时,保存的计划无效-因为引用已断开。本例中的新版本发布计划-但在8.2中并非如此。所以-首先升级或检查您的表是否存在,如果存在,则将其截断,而不是删除。当表不存在时,创建它。其他解决方案-仅使用动态SQL

一些注释:创建表或删除表不需要动态SQL


我不太清楚你的建议是什么。但是,我只是试图完全从函数中删除删除并创建执行。也就是说,在函数运行之前,我创建并截断“表my\u table\u loop\u result”。我也有同样的错误。此外,它不是一个临时表,也不是“table_generated_by_my_other_function”表。我刚刚意识到,我在另一个函数中又执行了一次DROP-CREATE。将其替换为一个简单的截断,现在可以正常工作。