解决方案 »

  1.   

    检查几个to_date的位置,看看是否出现下面此类的问题:例如to_date('2014/1/1 12:00','YYYY/MM/DD'),由于字符串超出了YYYY/MM/DD的范围,就会报1830的错误
      

  2.   

    只在ADD_MONTHS里面取去年日期时用了to_date, 其他全是转的to_char处理的,而且 用的只是年和年月啊、、
      

  3.   

    传入的都是String类型,存储过程里面参数是varchar2
    kprq:2014-03
    kprqY:2014
    DpId:1,2,3,4
    在PLSQL里面test测试是没有问题的     java调用的时候就报错,所以想知道是不是哪里写的不规范引起的
      

  4.   

    一般就两个地方
    1,隐式转换。如果=两边一边是date型,一边是字符型,则会进行一个to_date隐式转换。你的语句里看起来没有
    2,传入参数。由于某种原因,程序在执行的时候,参数发生了改变可以增加一个exception部分来排查。例如,建一个错误日志表err_log(errmsg varchar2(1000),paramvalue varchar2(1000),occurtime date);在存储过程的end前加上异常处理:
    exception
    when others then
    insert into err_log(errmsg,paramvalue,occurtime)values(sqlerrm,'in_kprq_y:'||in_kprq_y||';in_kprq:'||in_kprq||'; in_dp_id:'|| in_dp_id,sysdate);
    commit;在程序中再次执行该操作,然后到日志表中查看