ORA-06502: PL/SQL: 数字或值错误 
ORA-06512: 在 "SYS.STANDARD", line 406
ORA-06512: 在 "OPSMART.ZAA_GEODIRECTIONE", line 27
ORA-06512: 在 "OPSMART.PAFU_ODS_LTE_INFOZAA_MON", line 74
求救。
AB_dist := ZAA_dist_on_sphere(v_dept(i).a_lat, v_dept(i).a_lon, v_dept(i).b_lat, v_dept(i).b_lon);
这样调用就会出错
直接赋值或者
AB_dist := ZAA_dist_on_sphere(26.7297, 108.439058, 26.182657, 108.816947);
这样写死了就不会出错

解决方案 »

  1.   

    AB_dist := ZAA_dist_on_sphere(v_dept(i).a_lat, v_dept(i).a_lon, v_dept(i).b_lat, v_dept(i).b_lon);
    在你调用的v_dept(i).a_lat,v_dept(i).a_lon等等,这些函数执行可有错误?可以先执行一下这些函数,看看放回值是否出错。
      

  2.   

    ZAA_dist_on_sphere(v_dept(i).a_lat, 108.439058, v_dept(i).b_lat, v_dept(i).b_lon)
    这样调用也不会出错
    就v_dept(i).a_lon 这个有问题
    原数据类型
    lat NUMBER(10,6)
    lon NUMBER(10,6)
    定义
    create or replace type pa_obj_lte_infozaa as object(
        a_lac_ci VARCHAR2(15),
        a_cover_type NUMBER(2),
        b_lac_ci VARCHAR2(15),
        b_cover_type NUMBER(2),
        a_dir NUMBER(4),
        b_dir NUMBER(4),
        dist NUMBER(10,6), --距离
        dire NUMBER(10,6), --方位角
        dirn NUMBER(10,6), --反方位角
        tdir NUMBER(10,6), --方位角夹角度数
        a_lat NUMBER(10,6),
        a_lon NUMBER(10,6),
        b_lat NUMBER(10,6),
        b_lon NUMBER(10,6)
    );
      

  3.   

    然后这样也能成功
    AB_dist := ZAA_dist_on_sphere(v_dept(i).a_lat, v_dept(i).a_lon - 0.0000001, v_dept(i).b_lat, v_dept(i).b_lon);这是啥问题。。?