将 Case 语句插入到 CREATE FUNCTION 中

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

我一直在尝试将 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 语句中指定的实际流派名称

sql postgresql function pgadmin
2个回答
0
投票

在 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;
$$;

0
投票

您尚未添加正确的单词语法:

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 相同

我希望这能帮助您解决错误!!

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