数据库DB2_ERROR:SQL0805N(找不到程序包)

.数据库DB2_ERROR:SQL0805N(找不到程序包)
     DB2在执行SQL语句的时候会使用内部定义的包(package)来保持不同级别的游标的稳定性。
     DB2里面默认的时候会创建3个这样的包即SYSLN300,SYSLN301, SYSLN302,
     而当你的程序报“找不到程序包”的错误,并且程序包的名字的序号大于SYSLN302,
     也就说明DB2默认的包不够用,DB2要求使用更多的包,但是这些包在DB2中并没有创建,
     因此DB2抛出了异常。
     对于小的动态包,DB2提供64个可用句柄,对于大的动态包,提供364个句柄。
     这意味着默认每个应用可使用64*3+364*3 = 1284个句柄。应用创建每个prepare statement 
     或每个游标cursor将会使用一个句柄,而且每个句柄一直到被prepared statement 
     或者cursor被显示关闭(close)才释放。
     当出现上述错误时,解决办法有两种:
     1)是执行命令:
        db2 bind @db2cli.lst blocking all CLIPKG 30 grant public sqlerror continue
        其中CLIPKG为大的动态包的副本个数,最大值为30,可根据需要调整,
        这样DB2就可以找到它需要的包;
     2)是优化应用程序,当相关操作完成后,及时调用stmt.close 或cursor.close,
        尤其是prepare statement或者declare cursor在循环内声明或被多次执行时。
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值