为什么通过 Postgresql 中的函数删除记录时出现"out of range for bigint"错误?



我正在努力编写一个PostgreSQL存储过程,以根据某些条件从表中删除记录。如果我找到匹配项,则删除记录。

这是我的存储过程:

CREATE OR REPLACE FUNCTION DeleteSomeRecords(keys_param character varying)
RETURNS void AS
$$
BEGIN
    DELETE FROM public.SomeTable
    WHERE keyvalue = ANY(keys_param::bigint[]);
END;
$$ LANGUAGE plpgsql;

字段键值定义为bigint。

这是我从pgadmin 4:

称之为
SELECT * FROM DeleteSomeRecords('{9226086781768122240,9506724121199784302}')

我收到以下错误。

错误:值" 922608678176812240"不超出范围。 上下文:SQL语句"从public.soble。 其中keyValue = any(keys_param :: bigint [])" pl/pgsql函数deletesomeRecords(字符变化)第3行,第3行SQL语句

我在这里做错了什么?

有更好的写入此功能的方法吗?

我正在使用NPGSQL来调用此功能。我有一个列表值,我将其转换为逗号分隔字符串:

string sKeyValues = "{" + string.Join(",", keyValue) + "}";

谢谢

将其施加到数字:

WHERE keyvalue = ANY(keys_param::numeric[])

相关内容

最新更新