PL/pgSQL实现拼接姓名函数并调用插入表的问题
修复PL/pgSQL拼接函数及插入逻辑
原代码的核心问题是PL/pgSQL函数的语法错误——函数内的SELECT语句未正确处理返回逻辑,RETURN用法不符合PL/pgSQL规范。以下是修正后的完整代码:
修正后的拼接函数
CREATE OR REPLACE FUNCTION customer_name(first_name varchar, last_name varchar) RETURNS varchar LANGUAGE plpgsql AS $$ BEGIN -- 直接返回拼接后的字符串,无需额外SELECT语句 RETURN first_name || ' ' || last_name; END; $$
修正后的插入语句
插入逻辑本身没问题,为避免字段歧义,给表添加别名更清晰:
INSERT INTO Detailed( customer_id, rental_date, return_date, customer_name) SELECT customer_id, rental_date, return_date, customer_name(c.first_name, c.last_name) FROM customer c INNER JOIN rental r USING(customer_id);
补充说明
如果仅需字符串拼接,SQL原生函数会更轻量化,但既然课程要求必须使用PL/pgSQL函数,上述修正完全满足需求。
内容的提问来源于stack exchange,提问作者tman219
相关产品推荐
相关产品推荐

