我一直在尝试将 case 语句插入到我的 create 函数语句中,但没有成功。请注意,我正在使用 pgadmin 和 postgresql。我有一个包含租赁电影标题的表,以及一个标识该电影所属流派的整数。我从另一个表中获取流派整数/category_id,并希望将列数据转换为表示流派名称的字符串,而不是id 号以方便阅读。我必须使用 CREATE FUNCTION 来转换列。我想出的代码如下。我收到以下错误:
错误:输入第 14 行末尾出现语法错误:$$ ^
CREATE OR REPLACE FUNCTION idtoword(category_id INTEGER)
RETURNS VARCHAR(40)
LANGUAGE plpgsql
AS
$$
DECLARE genreWord VARCHAR(40);
BEGIN
SELECT CASE category_id
WHEN 12 THEN 'COMEDY'
WHEN 1 THEN 'DRAMA'
END
INTO genre
END;
$$
我尝试了多种方法将 case 语句插入到 create 函数中。我的语法有问题。我希望该函数获取一列类别 ID 并返回我在 case 语句中指定的实际流派名称
在 PostgreSQL 函数中,尝试使用以下代码使用 CASE 语句将类别 ID 转换为其相应的流派单词。
CREATE OR REPLACE FUNCTION idtoword(category_id INTEGER)
RETURNS VARCHAR(40)
LANGUAGE plpgsql
AS $$
DECLARE genreWord VARCHAR(40);
BEGIN
SELECT CASE category_id
WHEN 12 THEN 'COMEDY'
WHEN 1 THEN 'DRAMA'
ELSE 'UNKNOWN'
END
INTO genreWord;
RETURN genreWord;
END;
$$;
您尚未添加正确的单词语法:
CREATE OR REPLACE FUNCTION idtoword(category_id INTEGER)
RETURNS VARCHAR(40)
LANGUAGE plpgsql
AS $$
DECLARE
genreWord VARCHAR(40);
BEGIN
SELECT CASE category_id
WHEN 12 THEN 'COMEDY'
WHEN 1 THEN 'DRAMA'
ELSE 'UNKNOWN'
END
INTO genreWord;
RETURN genreWord;
END;
$$;
这个你也错过了,我在这里添加了其他未知的内容。
您需要添加到 GenreWord 中并与返回 GenreWord 相同
我希望这能帮助您解决错误!!