Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como simular estouro de inteiro assinado de 32 bits em PL/SQL?


Finalmente encontrei uma maneira de fazer isso. Digamos N é um valor do tipo NUMBER , e você precisa simular de alguma forma um estouro de inteiro com sinal de 32 bits, então:
N := MOD(N, 4294967296);
IF N > 2147483647
THEN
    N := N - 4294967296;
ELSIF N < -2147483648
THEN
    N := N + 4294967296;
END IF;