oracle – 获取较小数字的数字溢出错误,但较大数字成功
以下是我的测试功能:
create or replace FUNCTION test RETURN NUMBER AS v_count number(15); v_msisdn number(15); BEGIN v_msisdn:= 225952 * 10000; -- v_msisdn:=50510060853 * 10000; return v_msisdn; END; 当我执行该功能时 select test() from dual; 我收到一个错误 1426. 00000 - "numeric overflow" *Cause: Evaluation of an value expression causes an overflow/underflow. 但是,如果我更新 v_msisdn:=50510060853 * 10000; 我没有得到错误. 有人可以解释这个行为,因为第二个查询是一个更大的数字? 您可以通过将整数文字之一转换为整数或数字来解决此问题:v_msisdn:= cast(225952 as integer) * 10000; 出于性能原因,小整数文字被视为
在第二个示例中,其中一个值(50510060853)不适合pls_integer的范围,因此被解释为整数. 这是AskTom上的类似问题:Datatype Number results in Numeric overflow although value is small enough (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |