日期:2014-05-17  浏览次数:21208 次

一个让我很郁闷的:character to number conversion error ——求指点
我发Function只贴出部分代码:

FUNCTION NEWVIPUSER(                      
                      P_G_S                   NUMBER, --购买或升级会员标识:0、购买;1升级;2续费
                      P_V_T_ID              BOSS_VIP_USER_TYPE.V_T_ID%TYPE, --升级或购买会员类型
                      P_V_CUSTOMNO  BOSS_VIP_USER.V_CUSTOMNO%TYPE, --ec编号
                      P_PRODUCTNO    BOSS_VIP_USER_TYPE.V_PRODUCTNO%TYPE, --产品编号
                      P_V_USERNAME   BOSS_VIP_USER.V_USERNAME%TYPE, --创建人 格式为: 52+手机号码
                      P_V_DATE_B        BOSS_VIP_USER.V_DATE_B%TYPE, --会员开始时间:格式必须为 YYYY-MM-DD
                      P_M_NUMBER       NUMBER, --购买月数
                      P_V_STATUS        BOSS_VIP_USER.V_STATUS%TYPE, --状态:0、正常;1、过期。
                      P_V_REMARK       BOSS_VIP_USER.V_REMARK%TYPE --备注
                      ) RETURN VARCHAR2 IS
V_ID_NEW   NUMBER; --会员编号(新)
V_ID_NEW2  NUMBER; --会员编号(新2)
V_ID_OLD   NUMBER; --原会员编号    
V_RETURN_STRING VARCHAR2(300); --返回的字符串编号:按"@"符号分割
BEGIN    
V_RETURN_STRING := V_ID_NEW || '@' || V_ID_OLD || '@' ||V_ID_NEW2;    
RETURN V_RETURN_STRING;  
EXCEPTION    
WHEN OTHERS THEN      
DBMS_OUTPUT.PUT_LINE(sqlcode || ':' || sqlerrm);      
ROLLBACK;      
RETURN - 1;
END NEWVIPUSER;


在PLSQL中测试、返回不没有什么问题的!

但是、我在java程序中调用它的时候、却给我报错了!
调用部分关键代码:
if( !call.execute() )
{
      rval = call.getString( 1 ) ;
}

执行:call.execute()
抛出异常:

java.sql.SQLException: ORA-06502: PL/SQL: numeric or value error: