有一个存储过程,单独调用时(在db2命令行,或者通过一个简单的JDBC程序),存储过程执行了,没有抛出异常。两种调用情况有一个明显的不同,在db2命令行执行时间相对较短,而通过JDBC来调用执行时间很长。如果不是单独调用,而是在我的某一个比较复杂的程序中调用时(我是另外启动一个线程调用该存储过程),调用线程执行了很久很久,然后在程序中另外一个访问数据库的地方(一个很简单的SELECT)出现错误:
COM.ibm.db2.jdbc.DB2Exception:[IBM][CLI Driver][DB2/AIX64]SQL0805N 找不到程序包“NULLID.SYSLH203 0X5359534C564C3031”,SQLSTATE=51002。问过一些人,NULLID.SYSLH203是DB2内部的一个存储过程,我根本没有调用。为什么会出现这种情况的呢?请知道的讲一讲,感激不尽。

解决方案 »

  1.   

    把你写的JDBC开头和结尾贴出来瞧瞧
      

  2.   

    执行:
    db2 connect to cras db2 bind /usr/opt/db2_08_01/bnd/db2clipk.bnd clipkg 30

    db2 bind /usr/opt/db2_08_01/bnd/db2clist.bnd 说明:
    clipkg 30  这里的30可以改为适当的值,看你的信息,至少应该在4以上了,值为00-FF之间联系:
    [email protected]
      

  3.   

    补充:db2 connect to cras这里cras为DB名具体db2clipk.bnd和db2clist.bnd文件路径请自己确认
      

  4.   

    再补充:很有可能你的程序中打开的的prepared statement或cursor太多,而没有做适当的stmt.close和cursor.close操作,导致资源占用太多.