这个错误出现在我从一个游标取数据的地方。
OPEN cur_check;
lOOP
 fetch cur_check into v_account,v_left,v_tranamount;
 exit when cur_check%notfound;  --是这里抛出的异常
 ...
不是每次取出来都出错,而是取出一部分数据以后才出现的异常,所以,觉得不是数据类型的问题。如果是类型的问题,第一次取就应该出问题了。

解决方案 »

  1.   

    数据的精度或定义长度不够也肯定会出现这个错误,比如:
    sCharge varchar2(10);
    .....
    sTempstr:='aaaaaaaaaaaaaaaaaaaaaaaaa';
    将sTempstr fetch 到sCharge中就会报6502错误,你可以把那条fetch语句中的变量长度扩大足够长度再试一试!
    ORA-06502 PL/SQL: numeric or value error Cause: An arithmetic, numeric, string, conversion, or constraint error occurred. For example, this error occurs if an attempt is made to assign the value NULL to a variable declared NOT NULL, or if an attempt is made to assign an integer larger than 99 to a variable declared NUMBER(2). 
    Action: Change the data, how it is manipulated, or how it is declared so that values do not violate constraints. Copyright (C) 1995, Oracle Corporation
      

  2.   

    出错时的数据我捕捉到了。
    v_account   CHAR(32)
    v_left      NUMBER(13)
    v_tranamount NUMBER(13)和表里字段类型一致。
    出错时的数据对应的是:'104923399999',823455,-100
      

  3.   

    定义plsql参数的时候,
    如果是参数类型必须是varchar2,number或者%type型!!不能指定具体的长度!!
      

  4.   

    我用的就是%type。和表中的字段类型是一致的。