创建函数的问题
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; $$;
您的函数查询有两个问题:
如果您在 returns query
中的函数结构中初始化列,则必须在查询中 return 列,并且在您的查询中只需 return CASE WHEN active = 1 THEN ‘Yes’ ELSE ‘No’
在您的函数中添加 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;
$$;
感谢您阅读我的 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; $$;
您的函数查询有两个问题:
如果您在
returns query
中的函数结构中初始化列,则必须在查询中 return 列,并且在您的查询中只需 returnCASE WHEN active = 1 THEN ‘Yes’ ELSE ‘No’
在您的函数中添加
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;
$$;