这个错误出现在我从一个游标取数据的地方。
OPEN cur_check;
lOOP
fetch cur_check into v_account,v_left,v_tranamount;
exit when cur_check%notfound; --是这里抛出的异常
...
不是每次取出来都出错,而是取出一部分数据以后才出现的异常,所以,觉得不是数据类型的问题。如果是类型的问题,第一次取就应该出问题了。
OPEN cur_check;
lOOP
fetch cur_check into v_account,v_left,v_tranamount;
exit when cur_check%notfound; --是这里抛出的异常
...
不是每次取出来都出错,而是取出一部分数据以后才出现的异常,所以,觉得不是数据类型的问题。如果是类型的问题,第一次取就应该出问题了。
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
v_account CHAR(32)
v_left NUMBER(13)
v_tranamount NUMBER(13)和表里字段类型一致。
出错时的数据对应的是:'104923399999',823455,-100
如果是参数类型必须是varchar2,number或者%type型!!不能指定具体的长度!!