相关疑难解决方法(0)

在表返回函数中,plpgsql错误"RETURN NEXT在OUT参数的函数中没有参数"

我在PostgreSQL 9.2中有一个plpgsql函数,它返回一个表.该函数运行几个SELECT,返回与函数相同的列,然后返回这些结果或引发异常,具体取决于某些检查.我可以看到这样做的唯一方法是使用FOR ... LOOP,但我无法找到返回行的便捷方法.

我想做这样的事情:

CREATE OR REPLACE FUNCTION my_function()
RETURNS TABLE(column1 integer, column2 boolean, ...)
AS $BODY$
DECLARE
    result_row RECORD;
BEGIN
    FOR result_row IN (SELECT * FROM other_function_returning_same_columns()) LOOP
        IF something_wrong_with(result_row) THEN
            RAISE EXCEPTION 'Something went wrong';
        END IF;

        RETURN NEXT result_row;
    END LOOP;
END
$BODY$ LANGUAGE plpgsql STABLE;
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

错误:RETURN NEXT在OUT参数的功能中无法使用参数

我不确定为什么Postgres在这里抱怨,因为我的代码看起来很像文档中的示例,除了我的函数返回TABLE而不是SETOF.没有OUT参数.

我最终成功地使用了它

RETURN QUERY SELECT result_row.column1, result_row.column2, ...;
Run Code Online (Sandbox Code Playgroud)

但是必须一直列出所有列是丑陋的,难以维护.我相信一定有更好的方法.

postgresql exception-handling plpgsql

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

exception-handling ×1

plpgsql ×1

postgresql ×1