如何从函数调用中 return 自定义值?

How to return custom value from function call?

我正在尝试在 PostgreSQL 13 中调用一个名为 account.user_available_sel 的函数,其中 return 是一个 table 数据。像这样很简单:

SELECT * FROM account.user_available_sel(_email => 'email@xxx.xxx');

SELECT * 部分 return 返回整个 table 数据,其中包括用户的 email, password, forename, surname. dob

因为这只是为了检查 email 是否还没有被注册,所以如果记录存在,我只想 return 一个像 invalid 这样的简单值。在我看来是这样的(显然行不通):

SELECT 'invalid' FROM account.user_available_sel(_email => 'email@xxx.xxx');

我怎么能只return那个字符串而不是整个记录集?

您可以使用 EXISTS 获取布尔值。

SELECT EXISTS (SELECT *
                      FROM account.user_available_sel(_email => 'email@xxx.xxx'));

如果这不令人满意,您当然可以在其周围打一个 CASE 并获得自定义字符串。

SELECT CASE
         WHEN EXISTS (SELECT *
                             FROM account.user_available_sel(_email => 'email@xxx.xxx')) THEN
           'existent'
         ELSE
           'non-existent'
       END;

同样,您可以对数字或任何您喜欢的内容执行此操作。