SQL IN PostgreSQL - 错误:运算符不存在:整数 = 布尔值 --- 用户定义函数中的情况

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

老实说,我现在对 DVD 租赁数据库感到很迷茫。 我一直在尝试考虑要转换的数据,并且我认为我已经找到了可以使用的东西。我想将 Language_id 列中的数字转换为语言,并且我在 select 语句中使用 CASE 成功地做到了这一点,但是由于我需要使用用户定义的函数,所以我无法让它在函数中工作。

我已经来回工作了几个小时来查找错误,目前我已成功完成该功能

创建或替换函数 lang_change(language_id int)

返回 VARCHAR(20)

语言 plpgsql

AS

$$

开始

选择

案例语言_id

当 language_id = 1 时,则为“英语”

否则“未定义”

结束;

返回语言_id;

结束;

$$

。但是当我执行 SELECT lang_change(1) 来尝试测试它时,它会抛出

错误:运算符不存在:整数=布尔值

第 3 行:当 language_id = 1 时,则为“英语” ^ 提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。

对着我。我已经尝试在一些地方使用 CAST 将类型更改为 VARCHAR(20)(如果这是修复方法),但它没有以我尝试过的任何方式工作。我非常感谢所提供的任何和所有帮助。 谢谢!

sql postgresql error-handling pgadmin
1个回答
0
投票

为什么返回语言_id; ?您应该直接返回选择。您可以将函数更新为如下所示:

CREATE OR REPLACE FUNCTION lang_change(language_id INT)
RETURNS VARCHAR(20)
LANGUAGE plpgsql
AS $$
BEGIN
    RETURN CASE language_id
        WHEN 1 THEN 'English'
        ELSE 'UNDEFINED'
    END;
END;
$$;

这是测试的小提琴链接

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