oracle - Oracle NUMBER 类型是否可能溢出?

标签 oracle plsql

我正在使用名为 Appworx 的进程调度软件。其中,每个进程和子进程都可以有任意数量的“条件”,如果条件为真,则采取一些条件 Action 。

可能的条件操作之一是 goto 语句,其中一个普通整数是标签(每个条件从 1 开始编号)。我想使用此功能在循环中评估和运行一些任务,但您只能转到更高编号的条件(不要问我为什么......这似乎毁了大部分实用程序)。

我有理由相信,这一切都是Oracle在后台评估的。查看 Appworx 的架构后,goto 标签似乎都是 NUMBER(12,0)。我怀疑检查标签是否低于当前条件的逻辑是这样的:

where label > current_condition

因此,如果我要提供一个具有足够高值的 goto,我认为它会欺骗检查并允许我执行简单的循环。至少如果 Oracle 使用普通整数。是否有可能溢出它们,我将使用什么值将值溢出回 1?

我想 Oracle 版本很重要,如果是的话,它是 11g。

另外,如果有人愿意为我重新标记这个,请添加“appworx”

最佳答案

Oracle 数实际上是具有 40 位十进制有效数字的 float 。
所以,它们不能溢出。

(10^40-1) 是可以增加 1 的最大整数。
proof

NUMBER(12,0) 是 NUMBER 类型的子类型。
也就是说,它由 NUMBER 类型和一个限制检查器组成。

关于oracle - Oracle NUMBER 类型是否可能溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15484564/

相关文章:

python - 如何在django查询中传递oracle优化提示

Oracle DBMS_SCHEDULER 系统日期参数

甲骨文 : Getting Notification when table gets new data's

oracle - 插入 TARGET_TABLE SELECT * FROM SOURCE_TABLE;

sql - SQL 脚本中的条件

java - 下面的代码只能将附加文件中 20000 个数字中的 226 个数据插入到 TEMPTABLE 的数字列中

database - 11g R2 之后支持 Oracle Streams

oracle - 在 SQL Developer 中打印变量的值

oracle - 奇怪的 PL/SQL 错误 - PLS-00103

oracle pl/sql DBMS_LOCK 错误