我一个包里面写了5个存储过程,用其中一个存储过程来调用其中的4个存储过程,出现这样的错误,不知道是原因?
单步调试的时候发现其中一个存储过程过不去,提示ORA-06502: PL/SQL: 数字或值错误 : 数值精度太高
但我单个去调试这个存储过程能正常返回值,而没有报那个错误。
返回的数据于数据库中取的数据类型一个都是Number(5,4)....
不知为何会出现这样的问题,有谁遇到过。。急求帮助???

解决方案 »

  1.   

    Number(5,4)
    有输入值超过上述数据的精度;
    将类型修改一下试试
      

  2.   

    非常感谢楼上的回答
    我单个存储过程去调试的话,都没有问题,用的数据类型都是一样的NUMBER(5,4)
    返回值都正常,但是在另一个存储过程里面调用这个过程后,一旦执行就报那个错
    。一直解决不了
      

  3.   

    虽然是4年前的贴了,还是回一下,因为哥刚才也碰到这个问题。但不调用没有问题,是因为单步调用的时候没有碰到出问题的那个情况,从lz描述的情况看,应该是其中一个存储过程中的变量定义的长度不够,检查一下存储过程中有没有select .. into 语句,查看相关的变量定义,把长度、精度扩大,应该就没有问题了。哥刚碰到的问题就是这个原因,一个number的变量,定义长度是1,结果count出来的结果有查过10的,结果就报错了,很低级的错误,不过也让哥找了5分钟才发现,终归是发现鸟
      

  4.   

    今天也遇到这个问题了
    定义了一个年龄number(2)
    碰到一个年龄是104的  存储过程直接爆掉了
    果断的把精度改成number(3)
    问题解决花费时间2分钟
      

  5.   

    那是你的精度太小了把number(4,2)的4改大就可以的
      

  6.   

    在没发现问题的时中觉得很难,发现后总觉的很easy!吼吼!!!