[20180927]ora-01426.txt
[20180927]ora-01426.txt
--//链接:http://www.itpub.net/thread-2105458-1-1.html
1.环境:
SCOTT@test01p> @ ver1
PORT_STRING VERSION BANNER CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0 12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
set serveroutput on
DECLARE
L_NUMBER number;
BEGIN
L_NUMBER := 1024 * 1024 * 1024 * 1024;
DBMS_OUTPUT.PUT_LINE(L_NUMBER);
END;
/
DECLARE
*
ERROR at line 1:
ORA-01426: numeric overflow
ORA-06512: at line 4
--//1024*1024 = 1048576
--//1048576*1048576 = 1099511627776
d:\blog>oerr ora 1426
01426, 00000, "numeric overflow"
// *Cause: Evaluation of an value expression causes an overflow/underflow.
// *Action: Reduce the operands.
DECLARE
L_NUMBER number;
BEGIN
L_NUMBER := 1024 * 1024 * 1024 * 1024.0;
DBMS_OUTPUT.PUT_LINE(L_NUMBER);
END;
/
1099511627776
PL/SQL procedure successfully completed.
--//使用小数点,等于浮点运算,出现类型转换.
--//写成如下,一样通过,也证明没有溢出:
DECLARE
L_NUMBER number;
BEGIN
L_NUMBER := 1024 * 1024 * 1024;
L_NUMBER :=L_NUMBER *1024 *1024*1024;
DBMS_OUTPUT.PUT_LINE(L_NUMBER);
END;
/
1152921504606846976
PL/SQL procedure successfully completed.
SCOTT@test01p> set serverout on
SCOTT@test01p> DECLARE
2 L_NUMBER number;
3 BEGIN
4 L_NUMBER := 2147483647-1+1;
5 L_NUMBER := 2147483647+1-1;
6 DBMS_OUTPUT.PUT_LINE(L_NUMBER);
7 END;
8 /
DECLARE
*
ERROR at line 1:
ORA-01426: numeric overflow
ORA-06512: at line 5
--//很明显oracle在一个算式里面达到2^31 就报错.改成如下也不会报错
DECLARE
L_NUMBER number;
BEGIN
-- L_NUMBER := 2147483647-1+1;
L_NUMBER := 2147483647;
L_NUMBER := L_NUMBER+1-1;
DBMS_OUTPUT.PUT_LINE(L_NUMBER);
END;
/
2147483647
PL/SQL procedure successfully completed.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库