对大多数人来说,这可能是一个简单的问题。然而,我无法避免这个错误。我有一个id(primary_key)的表,表的数据类型是bigint,我们从最小-负值(-9223372036854775808)开始向表中输入记录。
现在,我需要根据每个记录数据对该表进行一些操作。所以,我需要对所有记录进行迭代。这是我使用的示例循环,我得到以下错误。
psql:update-migration2.sql:39: ERROR: integer out of range
CONTEXT: PL/pgSQL function inline_code_block line 5 at FOR with integer loop variable
下面,是我得到这个错误的示例循环:
do $$
declare
i bigint;
begin
for i in -9223372036854775808 .. -9223372036852105062 loop
-- my logic
i := i + 1;
end loop;
end;$$
任何立即的帮助解决将是非常感激的。
FOR ... LOOP只适用于整数(-2147483648到+2147483647)。
这是确定的。
do $$
declare
i bigint;
begin
for i in -2147483648 .. -2147483647 loop
-- my logic
end loop;
end;$$
DO
这个失败。
do $$
declare
i bigint;
begin
for i in -2147483649 .. -2147483647 loop
-- my logic
end loop;
end;$$
ERROR: integer out of range
CONTEXT: PL/pgSQL function inline_code_block line 5 at FOR with integer loop variable