如何在PL / SQL中模拟32位有符号整数溢出? [英] How to simulate 32-bit signed integer overflow in PL/SQL?

查看:123
本文介绍了如何在PL / SQL中模拟32位有符号整数溢出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您知道如何在Oracle PL / SQL中模拟32位整数溢出。
例如,

Do you know how to simulate a 32-bit integer overflow in Oracle PL/SQL. For instance,

2147483647 + 1 = -2147483648

-2147483648 - 1 = 212147483647

我尝试了PLS_INTEGER,但它抛出了溢出异常。

I tried PLS_INTEGER, but it throws an overflow exception.

推荐答案

我终于找到了办法。假设 N 是类型 NUMBER 的值,您需要以某种方式模拟32位有符号整数溢出,那么:

I finally found a way to do that. Let say N is a value of type NUMBER, and you need to somehow simulate a 32-bit signed integer overflow, then:

N := MOD(N, 4294967296);
IF N > 2147483647
THEN
    N := N - 4294967296;
ELSIF N < -2147483648
THEN
    N := N + 4294967296;
END IF;

这篇关于如何在PL / SQL中模拟32位有符号整数溢出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆