小编vin*_*har的帖子

获取较小数字的数字溢出错误,但较大数字成功

以下是我的测试功能:

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;
Run Code Online (Sandbox Code Playgroud)

当我执行函数时

select test() from dual;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

1426. 00000 -  "numeric overflow"
*Cause:    Evaluation of an value expression causes an overflow/underflow.
Run Code Online (Sandbox Code Playgroud)

但是,如果我更新

v_msisdn:=50510060853 * 10000;
Run Code Online (Sandbox Code Playgroud)

我没有得到错误.

有人可以解释这个行为,因为第二个查询是一个更大的数字?

oracle plsql

8
推荐指数
1
解决办法
87
查看次数

标签 统计

oracle ×1

plsql ×1