我想弄清楚为什么我的 INSERT INTO 代码不接受我的函数(rental_string)

问题描述 投票:0回答:1

该功能似乎单独有效。 pgAdmin 对它以及桌子都竖起了大拇指。我尝试了许多不同的方法来键入函数和 INSERT INTO 部分。我已经为此工作了一个多小时,但似乎陷入困境。直到这部分我都做得还不错。有什么想法吗?

CREATE FUNCTION rental_string (title VARCHAR(250), rating VARCHAR(250))
RETURNS VARCHAR(250)
LANGUAGE plpgsql
AS
$$
BEGIN
RETURN CONCAT(title,' - '  ,rating);
END;
$$;


INSERT INTO detailed_table 
    SELECT DISTINCT rental_string(f.title, f.rating), c.name, l.name
    FROM inventory AS i 
    JOIN film as f ON f.film_id = i.film_id
    JOIN film_category as fc ON fc.film_id = f.film_id 
    JOIN category AS c ON c.category_id = fc.category_id
    JOIN language AS l ON l.language_id = f.language_id
    GROUP BY f.title, c.name, l.name
    ORDER BY f.title;


CREATE TABLE detailed_table (
name_rating VARCHAR(250),
category VARCHAR(250),
film_language VARCHAR(250)
);

以下是我不断收到的错误:

错误:函数rental_string(字符变化,未知,mpaa_ rating)不存在 第 3 行:选择 DISTINCTrental_string(title, '', rating), c.name, l... ^ 提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

SQL状态:42883 性格:47

sql function concatenation sql-insert
1个回答
0
投票

您的函数仅接受 2 个参数:标题 VARCHAR(250)、评级 VARCHAR(250)

但是,您的查询似乎传递了 3 个参数:

SELECT DISTINCT rental_string(title, '', rating), c.name, l...

这似乎是错误的原因

HINT: No function matches the given name and argument types. You might need to add explicit type casts.

删除第二个参数(''),它应该可以工作!

© www.soinside.com 2019 - 2024. All rights reserved.