PostgreSQL:控件已到达函数结尾,但未返回

PostgreSQL:控件已到达函数结尾,但未返回,postgresql,plpgsql,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; $$

我试图创建一个返回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;

您定义的普通函数(
返回文本
)总是只返回一个值

因此,除非函数定义为
返回void
,否则必须返回一个值,即不能使用
返回没有参数

如果要返回不同数量的行(0或大于1的数字),则需要一个set returning函数

这样的函数被声明为
返回文本集
(或其他类型),并且从函数内部使用
返回下一个值
向函数输出中添加一行,并
返回无参数终止执行


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

像您定义的那样的普通函数(
返回文本)
)总是只返回一个值

因此,除非函数定义为
返回void
,否则必须返回一个值,即不能使用
返回没有参数

如果要返回不同数量的行(0或大于1的数字),则需要一个set returning函数

这样的函数被声明为
返回文本集
(或其他类型),并且从函数内部使用
返回下一个值
向函数输出中添加一行,并
返回无参数终止执行


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

它是否返回void?。它返回文本:返回文本为$$,请向我们显示完整的代码,因为StackOVerflow拒绝更新。表示代码多于文本。是否声明了输出变量?。。我的意思是,如果您没有返回void?,您就不能不返回任何内容。它返回文本:返回文本为$$,请向我们显示完整的代码,因为StackOVerflow拒绝更新。表示代码多于文本。是否声明了输出变量?。。我的意思是,如果你不回来,你就不能什么都不回来