问题标签 [ora-01438]

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 投票
9 回答
159688 浏览

sql - ORA-01438: 大于指定精度的值允许此列

我们有时会从合作伙伴的数据库中收到以下错误:

完整的响应如下所示:

此错误的原因可能是什么?

0 投票
4 回答
12960 浏览

java - BigDecimal 到 SQL NUMBER:检查值是否大于精度

在我的应用程序中,我将数字处理为 BigDecimal,并将它们存储为 NUMBER(15,5)。现在我需要在 Java 上正确检查 BigDecimal 值是否适合该列,这样我就可以在不执行 SQL、捕获异常和验证供应商错误代码的情况下生成正确的错误消息。我的数据库是 Oracle 10.3,这样的错误会导致错误 1438

经过一番谷歌搜索,我发现没有这样的代码,所以我想出了自己的。但我对这段代码真的很不满意......简单,但同时简单到足以怀疑它的正确性。我用许多值、随机值和边界对其进行了测试,它似乎有效。但由于我对数字非常不满意,我想要一些更健壮且经过良好测试的代码。

编辑:最近的测试并没有因为超出比例的数字而出现异常,只是默默地四舍五入,我不确定在没有和我进行这些第一次测试时有什么不同。这种舍入是不可接受的,因为应用程序是财务应用程序,并且任何舍入/截断必须是显式的(通过 BigDecimal 方法)。抛开异常不谈,此测试方法必须确保数字对于所需精度来说不会太大,即使是非有效数字也是如此。抱歉,澄清晚了。

谢谢你的时间。


这个问题我还是很好奇的。我的代码仍在运行,我还没有一些正确或失败情况的“证明”,或者这种测试的一些标准代码。

所以,我正在悬赏它,希望能得到其中的任何一个。

0 投票
3 回答
3089 浏览

oracle - ORA-01438 错误

谁能帮我解决这个例外?

ORA-01438: 该列允许的值大于指定的精度

ORA-06512:在“DM001.DFEE_AFT_IUD_JOURNAL”,第 58 行

ORA-04088: 执行触发器 'DM001.DFEE_AFT_IUD_JOURNAL' 时出错 ORA-06512: 在第 4 行

0 投票
2 回答
1696 浏览

php - OCI_CONNECT 会导致 ORA-01438:值大于此列允许的指定精度吗?

我想知道 oci_connect() 是否会导致 1438 错误,因为我总是这样:

警告:oci_connect() [function.oci-connect]:ORA-00604:递归 SQL 级别 1 发生错误 ORA-01438:值大于此列允许的指定精度 ORA-06512:/xxxxxx/some 中的第 8 行。第220行的php

这不取决于正在查询哪个表。似乎 oci_connect() 正在某些 sys 表中插入一些跟踪人员,或者触发器与登录有关。但我无权在 sys.xml 中找出这个问题。

任何想法可能是导致此错误的原因?

更新

oracle 是否会在没有专门配置的情况下自动在某处进行日志记录?我可以让 oracle 或 PHP 告诉我哪个表或列受到影响吗?

更新 我发现,当我直接在 Bash 中调用 PHP 脚本时,它确实可以正常工作。但是来自网络的电话会导致标题问题。任何想法?

0 投票
1 回答
143 浏览

oracle - 插入显示错误的查询

我使用以下查询在 oracle10g 中创建了一个表......

表已成功创建...但问题是当我试图在表中插入一行时它显示错误

我使用的查询是,

我在哪里违反了约束?请任何人解释..

0 投票
1 回答
9166 浏览

oracle - ORA-01438: 该列允许的值大于指定的精度

以下是我的代码,我不明白我做错了什么。任何帮助将不胜感激

程序编译没有任何错误。但是当我调用proc时出现以下错误

错误报告:

0 投票
0 回答
130 浏览

oracle - 为什么我得到“大于此列允许的指定精度的值”?

在Oracle 数据库的SQL Fiddle上尝试以下 SQL 时会产生此错误。

ORA-01438: 该列允许的值大于指定的精度

是否允许插入 400.00,考虑到 根据 Oracle 文档, 400.00 小数点前少于 4 位,小数点后少于 2 位?

0 投票
0 回答
196 浏览

cobol - MicroFocus Cobol 程序返回 ORA-01438

任何人在使用 Oracle 12c 的 Micro Focus Cobol 5.1 时遇到执行程序返回 ORA-01438(大于此数字列允许的指定精度)的任何问题?

Cobol 列定义是PIC S9(7)V9(2)和 Oracle 表列定义NUMBER(9,2)。服务器是 SPARC Solaris 64 位。大多数(如果不是全部)预编译器/编译器参数都设置为 64 位的默认值。Cobol 程序在 Oracle 11g 环境中运行良好。我们确实增加了 Oracle 表列的大小,作业运行良好,但结果数据不正确。谢谢。