PostgreSQL函数忽略return语句并继续下一个return

时间:2018-11-03 16:12:28

标签: postgresql

我试图创建一个返回表的postgres函数,但是当我执行该函数时, return 语句应该关闭或结束整个函数,但是它一直忽略那个结尾,然后继续。

该函数非常简单:如果字段为空,则只需进行验证。我知道,如果我发表 ELSE 声明,该问题将得到解决,但是我不知道为什么它会忽略 RETURN ,并且不知道是否有任何问题 ELSE 以外的其他方法来解决该问题

kubectl get roles --all-namespaces -o jsonpath='{.items[*].apiVersion}'

这是回报:

  

0必填字段为空,请填写并   再试一次。空字段{'Firstname'}

     

0必填字段为空,请填写并   再试一次。空字段{名字}

1 个答案:

答案 0 :(得分:1)

执行两个return query语句是因为return query不会退出该函数。如果要在if块的末尾退出,可以添加一个return语句(单独)。

按照doc

  

返回查询实际上并不从函数中返回-它们只是   将零或更多行追加到函数的结果集中。然后执行   继续执行PL / pgSQL函数中的下一条语句。如   如果连续执行RETURN NEXT或RETURN QUERY命令,则   结果集已建立。最终的RETURN,不应包含任何参数,   使控件退出功能(或者您可以让控件到达   函数的结尾)。