最近在跑成功率数据的时候出现了ORA-01426: 数字溢出现象,单我的字段设置的是number,怎么会出现这种现象呢,怎么解决?请各位大虾指点!!   代码如下1-1/(1+1/exp(     
            (     1.7582)+                        
            MAX_INCRE_C_FEE        *(    -0.0204)+
            INNET_MONTH            *(     0.0180)+
            MAX_CP_LOCAL_LONG      *(    -0.0134)+
            B_02                   *(    -0.6583)+
            MAX_INCRE_FEE          *(   -0.00520)+
            BUSI_13                *(    -0.5600)+
            R_B_INNET_FEE          *(     0.2003)+
            R_B_16                 *(     0.5680)+
            BUSI_45                *(    -0.8527)+
            B_MOBILE_TEL_FEE       *(     0.3489)+
            R_FAVOR_FEE            *(    0.00400)+
            B_18                   *(    -0.6492)+
            BUSI_19                *(    -0.1488)+
            BUSI_49                *(    -0.4117)+
            BUSI_54                *(    -0.8421)+
            CP_TO_MOB              *(   -0.00771)+
            MAX_FUNC_FEE           *(    -0.0457)        
                              ))
            ELSE 1 END As P_value,
其中p_value 定义如下
p_value number;
请大虾指教

解决方案 »

  1.   

    这个我刚才遇到了,我的代码是:create table cyb_zzyw_log_end compress nologging as
    SELECT T.DEVICE_NUMBER,
    1/(exp(-(-0.594*T_5
    +0.338*T_7
    -1.402*T_9
    +0.472*T_10
    +0.833*T_18
    +0.586*T_26
    +0.784*T_29
    +0.509*T_36
    +2.034*T_40
    +0.306*T_42
    +0.063*FUNC_FEE
    +0.037*INCRE_C_FEE
    -0.543*B_INNET_FEE
    +0.000*MOBILE_DURA
    +0.406
    ))+1) P_DX,
    1/(exp(-(0.689*T_10
    -1.664*T_23
    +0.666*T_26
    +0.888*T_29
    +0.354*T_39
    -0.891*B1_02
    -0.544*B_INNET_FEE
    +0.296
    ))+1) P_GPRS,
    1/(EXP(-(
    -0.318*T_1             
    -0.805*T_5             
    +0.320*T_7             
    -0.865*T_9             
    +3.059*T_10            
    +1.463*T_17            
    +0.383*T_24            
    -0.737*T_31            
    +0.605*T_33            
    +0.938*T_36            
    -0.594*T_38            
    +0.315*T_39            
    -0.173*T_42            
    +0.020*ROOT_FEE        
    +0.902*B1_07           
    -0.363*B_INNET_FEE     
    -0.402*B_MOBILE_TEL_FEE
    +0.000*LOCAL_UNI_DURA  
    -0.822*B_03            
    +0.576*B_05            
    -1.223*B_09            
    -0.596*B_13            
    +1.883* B_17            
    +1.082))+1) P_JK,
    1/(EXP(-(
    +0.146*T_4          
    -0.294*T_5          
    +0.118*T_7          
    +0.239*T_10         
    +0.304*T_17         
    +0.572*T_18         
    +0.388*T_19         
    +0.489*T_26         
    +0.126*T_27         
    +0.385*T_29         
    +0.411*T_33         
    +0.182*T_36         
    +0.282*T_38         
    +0.186*T_39         
    +0.041*FUNC_FEE     
    +0.019*INCRE_C_FEE  
    +0.511*B1_06        
    +0.027*CP_LOCAL_LONG
    +0.026*CP_SN_ROAM   
    +0.904*B_02         
    -0.510*B_08         
    -1.216 ))+1) P_MYB,
    1/(EXP(-( 0.141*T_4             
    -0.424*T_5             
    +0.377*T_7             
    +0.417*T_10            
    +0.220*T_17            
    +0.705*T_18            
    +0.564*T_24            
    -0.898*T_25            
    +0.463*T_28            
    +0.417*T_29            
    -0.296*T_31            
    +0.941*T_33            
    +0.211*T_39            
    +0.171*T_42            
    +0.026*FUNC_FEE        
    +0.037*INCRE_C_FEE     
    +0.996*B1_03           
    +0.690*B1_06           
    -0.296*B_INNET_FEE     
    -0.272*B_MOBILE_TEL_FEE
    +1.327*B_02            
    -1.028*B_16            
    +0.014 ))+1) P_RT
    FROM  cyb_zzyw_fzsh_end_2 t
    上面报错。
    处理办法是:
    解决办法是:
    在每个表达前加TRUNC(表达式,10),就是节断。
      

  2.   

    这个我刚才遇到了,我的代码是:create table cyb_zzyw_log_end compress nologging as
    SELECT T.DEVICE_NUMBER,
    1/(exp(-(-0.594*T_5
    +0.338*T_7
    -1.402*T_9
    +0.472*T_10
    +0.833*T_18
    +0.586*T_26
    +0.784*T_29
    +0.509*T_36
    +2.034*T_40
    +0.306*T_42
    +0.063*FUNC_FEE
    +0.037*INCRE_C_FEE
    -0.543*B_INNET_FEE
    +0.000*MOBILE_DURA
    +0.406
    ))+1) P_DX,
    1/(exp(-(0.689*T_10
    -1.664*T_23
    +0.666*T_26
    +0.888*T_29
    +0.354*T_39
    -0.891*B1_02
    -0.544*B_INNET_FEE
    +0.296
    ))+1) P_GPRS,
    1/(EXP(-(
    -0.318*T_1             
    -0.805*T_5             
    +0.320*T_7             
    -0.865*T_9             
    +3.059*T_10            
    +1.463*T_17            
    +0.383*T_24            
    -0.737*T_31            
    +0.605*T_33            
    +0.938*T_36            
    -0.594*T_38            
    +0.315*T_39            
    -0.173*T_42            
    +0.020*ROOT_FEE        
    +0.902*B1_07           
    -0.363*B_INNET_FEE     
    -0.402*B_MOBILE_TEL_FEE
    +0.000*LOCAL_UNI_DURA  
    -0.822*B_03            
    +0.576*B_05            
    -1.223*B_09            
    -0.596*B_13            
    +1.883* B_17            
    +1.082))+1) P_JK,
    1/(EXP(-(
    +0.146*T_4          
    -0.294*T_5          
    +0.118*T_7          
    +0.239*T_10         
    +0.304*T_17         
    +0.572*T_18         
    +0.388*T_19         
    +0.489*T_26         
    +0.126*T_27         
    +0.385*T_29         
    +0.411*T_33         
    +0.182*T_36         
    +0.282*T_38         
    +0.186*T_39         
    +0.041*FUNC_FEE     
    +0.019*INCRE_C_FEE  
    +0.511*B1_06        
    +0.027*CP_LOCAL_LONG
    +0.026*CP_SN_ROAM   
    +0.904*B_02         
    -0.510*B_08         
    -1.216 ))+1) P_MYB,
    1/(EXP(-( 0.141*T_4             
    -0.424*T_5             
    +0.377*T_7             
    +0.417*T_10            
    +0.220*T_17            
    +0.705*T_18            
    +0.564*T_24            
    -0.898*T_25            
    +0.463*T_28            
    +0.417*T_29            
    -0.296*T_31            
    +0.941*T_33            
    +0.211*T_39            
    +0.171*T_42            
    +0.026*FUNC_FEE        
    +0.037*INCRE_C_FEE     
    +0.996*B1_03           
    +0.690*B1_06           
    -0.296*B_INNET_FEE     
    -0.272*B_MOBILE_TEL_FEE
    +1.327*B_02            
    -1.028*B_16            
    +0.014 ))+1) P_RT
    FROM  cyb_zzyw_fzsh_end_2 t
    上面报错。
    处理办法是:
    解决办法是:
    在每个表达前加TRUNC(表达式,10),就是节断。