raise_application_error(-20001,'这里的字非常非常的多')使用这个函数抛异常的时候,后面的文字太长了会被截断,oracle不会返回这么多字,会被截断,这是什么原因产生的,有没有解决办法? 我是在触发器里面写的,所以不是储存过程,不会有out参数之类的东西。

解决方案 »

  1.   

    raise_application_error(error_number,message)
    其中message最大长度是2048,你的异常信息会超过这个长度?
      

  2.   


    如果真是2048那也不会有问题,我刚刚截了一实际返回字符串的长度,我查了一下select lengthb('') from dual,只返回了 1012 的长度。
      

  3.   

    你的是中文字符,那也应该返回2K的一半1024啊,PROCEDURE RAISE_APPLICATION_ERROR( error_number_in IN NUMBER, error_msg_in IN VARCHAR2);
    里面的错误代码和内容,都是自定义的。说明是自定义,当然就不是系统中已经命名存在的错误类别,是属于一种自定义事务错误类型,才调用此函数。error_number_in 之容许从 -20000 到 -20999 之间,这样就不会与 ORACLE 的任何错误代码发生冲突。error_msg_in 的长度不能超过 2k,否则截取 2k。lengthb你用的是这个?还是length?
      

  4.   


    肯定是lengthb,用length只有600多的长度.