创建函数的问题

Issues creating a function

感谢您阅读我的 post 并尝试提供帮助。

我是 PostgreSQL 的新手,正在努力尝试创建一个函数来将当前为整数 (1,0) 的 table 列转换为 'Yes' 或“否”并重新显示table 更改后,您对如何最好地执行此操作有何建议?

下面将 运行 并显示一个成功的查询,但是当我实际尝试 运行 它时 SELECT convert_active();它不工作。我也尝试过使用 CASE 来做到这一点,但也无法让它工作。请帮忙!

    CREATE or REPLACE FUNCTION convert_active()
Returns TABLE (customer_id int, 
      first_name varchar,
    last_name varchar,
    email varchar,
    rental_date timestamp,
    active varchar)
Language plpgsql
As $$
Begin
RETURN QUERY
SELECT CASE WHEN active = 1 THEN ‘Yes’
         ELSE  ‘No’
END
 
FROM email_marketing_list;
END; $$;

您的函数查询有两个问题:

  1. 如果您在 returns query 中的函数结构中初始化列,则必须在查询中 return 列,并且在您的查询中只需 return CASE WHEN active = 1 THEN ‘Yes’ ELSE ‘No’

  2. 在您的函数中添加 active varchar 并在查询中需要转换为 varchar

CREATE or REPLACE FUNCTION convert_active()
    RETURNS TABLE
            (
                customer_id INT,
                first_name  VARCHAR,
                last_name   VARCHAR,
                email       VARCHAR,
                rental_date TIMESTAMP,
                active      VARCHAR
            )
    LANGUAGE plpgsql
AS
$$
BEGIN
    RETURN QUERY
        SELECT eml.customer_id,
               eml.first_name,
               eml.last_name,
               eml.email,
               eml.rental_date,
               (CASE
                   WHEN eml.active = 1 THEN 'Yes'
                   ELSE 'No'
                   END)::VARCHAR

        FROM email_marketing_list eml;
END;
$$;