问题标签 [ora-01426]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7170 浏览

oracle - ORA-01426: 执行存储过程时出现数值溢出异常

我将一个 Delphi 6 应用程序移植到 Delphi 2007,它使用 BDE 连接到一个 Oracle 9i 数据库。我得到一个

ORA-01426: 数值溢出异常

当我执行存储过程时。这是随机发生的,如果我使用相同的参数通过应用程序重新运行存储过程,则不会发生异常。

旧的 Delphi 6 应用程序工作得很好。

任何人的想法?

0 投票
3 回答
1507 浏览

oracle - dbms_utility.get_time 可以翻转吗?

我遇到了一个庞大的遗留 PL/SQL 过程的问题,它具有以下逻辑:

wherel_elapsedl_timestamp是类型PLS_INTEGERl_timestamp保存先前调用的结果get_time

在批处理运行期间,这条线突然开始失败ORA-01426: numeric overflow

文档get_time有点含糊,可能是故意的,但它强烈表明返回值没有绝对意义,几乎可以是任何数值。所以我怀疑它被分配给 a PLS_INTEGER,它只能支持 32 位整数。然而,互联网上充斥着人们正在做这种事情的例子。

当我get_time手动调用时发现了确凿的证据,它返回一个值-214512572,这可疑地接近 32 位有符号整数的最小值。我想知道在第一次调用get_time和下一次调用之间的时间间隔内,Oracle 的内部计数器是否从其最大值和最小值翻转,从而在尝试从另一个中减去一个时导致溢出。

这是一个可能的解释吗?如果是这样,这是该get_time功能的固有缺陷吗?我可以等着看今晚批次是否再次失败,但我很想在那之前得到这种行为的解释。

0 投票
1 回答
835 浏览

c# - NHibernate/Oracle:如何在 BINARY_DOUBLE 列中插入大量数字?

我有一个 C# System.Double 属性,它可能包含类似 1e250 的值:

该属性映射到 BINARY_DOUBLE 列:

Binary_Double 的最大值约为 1.7e+308(Oracle 文档),但出现异常:
ORA-01426:数字溢出

即使通过 SQL+ 执行查询也会出现问题。我必须使用 TO_BINARY_DOUBLE 强制转换才能使其工作。据我了解,提供的数字被隐式转换为 NUMBER:我的查询适用于 1e125(NUMBER 的最大值为 1e126),但不适用于 1e250。

我也尝试了这些映射,但没有成功:

使用:Oracle 11G - NHibernate 2.1.0 - .Net 3.5 SP1

感谢您提供的任何线索!

0 投票
2 回答
8649 浏览

sql - Oracle11g for 循环中的数值溢出

我在 pl/sql 函数中有一个 for 循环,例如:

变量 i, min, max 被声明为NUMERIC

在我的情况下,最小值和最大值通常非常大,但范围本身很小,即:

如您所见,范围约为 ~256,但使用此值,oracle 会引发数字溢出错误,我坚持如何让它工作。

我应该如何迭代这些值?

编辑

好的,我有一个可行的答案,使用 max/min diff 循环,但是真的不可能循环遍历 oracle 中的大值吗?

编辑我检索到的错误是:

第88行代码是:

min_host、max_host、client_ip 是inet_aton(IP 的数字表示)的结果

0 投票
3 回答
827 浏览

.net - 获取 ORA-01426:.NET 4.0、C# 中的数值溢出,使用 Oracle DataAccess .dll

我正在尝试使用 Visual Studio 2010、.Net 4、C# 编写一个非常简单的网页。我正在使用 Oracle DataAccess .DLL 并且已经很好地连接到数据库。当我运行这段代码时,我得到了异常'ORA-01426:Numeric Overflow。“我没有做任何计算,我在提交查询之前将整个东西放入一个字符串中。下面是我的代码示例:

0 投票
1 回答
1150 浏览

ora-01426 - 将 +1.7976931348623155E308 插入列 ORA-01426 数字溢出

我正在移植一个使用大型 Java 双精度值 (MAX-1d = +1.7976931348623155E308) 作为信号量来指示条件的应用程序。我无法弄清楚如何定义列以接受此值而不产生错误:ORA-01426:数字溢出。我尝试了 FLOAT 的各种精度(直到 126),以及 DOUBLE_PRECISION 和 BINARY_DOUBLE,并尝试使用 TO_BINARY_DOUBLE 的触发器 - 都失败了。我用的是11g。DB2 接受 DOUBLE 作为数据类型并处理该值。

0 投票
1 回答
1149 浏览

oracle - collection.EXISTS(n) 方法的数值溢出异常

在 Oracle 11g 数据库上运行以下代码时,我得到 ORA-01426: numeric overflow:

看来 EXISTS 方法无法处理大量数据。但它不应该接受 NUMBER 数据类型作为输入吗?Oracle文档没有太大帮助,因为它没有提到参数的数据类型。

有谁知道 EXISTS 可以接受的最大精度是多少?

0 投票
0 回答
5531 浏览

oracle - ORA-01426: 在过程中执行提交时出现数字溢出错误

我在执行我的 PL/SQL 代码期间遇到主题提到的错误,在调试我的代码期间我观察到我的数据库不允许我在使用 DBMS_JOB.SUBMIT 时在过程中使用“COMMIT”。

我的程序有点复杂,所以我将使用示例代码作为参考:

错误 :

ORA-01426: 数值溢出

ORA-06512: 在第 14 行

我试图在其他一些数据库中执行相同的代码(我的意思是我的示例代码和我的实际代码),它工作正常,没有任何问题,问题只出在这些数据库上。

请随时询问我是否错过了添加任何细节。