首页 > 解决方案 > Postgresql函数返回有变化的表

问题描述

我在函数调用中遇到错误。错误是:

列引用“rental”不明确第 2 行:CASE active DETAIL:它可以引用 PL/PGSQL 变量或表列

查询是:

CREATE FUNCTION convert()
RETURNS TABLE (customerid int, fname varchar, lname varchar, email varchar, tripDate timestamp, rental varchar)
Language plpgsql
AS $$
BEGIN
     RETURN QUERY
            SELECT CASE WHEN rental = 1 
                        THEN 'yes'
                        ELSE 'no'
             END
     FROM EML
END; $$;

标签: sqlpostgresqlfunction

解决方案


改变

SELECT CASE WHEN rental = 1 THEN 'yes'
                        WHEN rental = 0 THEN 'no'

SELECT 
    CASE 
        WHEN rental = 1 
            THEN 'yes'
         ELSE  'no'
END

编辑部分:

如果你不想只迭代二进制值,你应该像这样添加这个条件:

RETURN QUERY
         SELECT 
        CASE 
            WHEN rental = 1 
                THEN 'yes'
             ELSE  'no'
    END
 FROM EML WHERE rental In(0, 1)

推荐阅读