PostgreSQL:控件在没有RETURN的情况下达到了函数的结尾

时间:2017-01-20 13:02:18

标签: postgresql plpgsql

我正在尝试创建一个返回X行或0行的函数。

这是我的代码:

    ...
    IF var != '' THEN
        RETURN var;
    ELSE
        RETURN NULL;
    END IF;
END;
$$
LANGUAGE 'plpgsql';

如果我这样做:

    ...
    IF var != '' THEN
        RETURN var;
    ELSE
        RETURN;
    END IF;
END;
$$
LANGUAGE 'plpgsql';

我收到错误:

ERROR:  missing expression at or near ";"
LINE 19: RETURN;

1 个答案:

答案 0 :(得分:1)

正常函数(如您定义的函数(RETURNS text)将始终返回一个值。

因此,除非将函数定义为RETURNS void,否则您必须返回一个值,即不能在没有参数的情况下使用RETURN;

如果要返回不同数量的行(0或大于1的数字),则需要设置返回函数

这样的函数被声明为RETURNS SETOF text(或其他一些类型),并且从函数内部使用RETURN NEXT val;向函数输出添加一行,而RETURN;没有参数终止执行。

这样的函数可以像查询中的表一样使用。