db2 C的存储过程老是出现时间戳问题?

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:283

现象:
sqlcode 报-818错误,存储过程不能运行

原因:

原因一:
一个C的过程在一个instance下的几个 database 下创建时,
由于db2 将全部的 C的过程的 dll 文件是按照 instance来管理, 而不是按照
database 来管理。这样如果将一个 C 的过程在多个 database 上创建时,如
果不换文件名,这时在一个 database 创建就会导致在其他 database 上的该
过程无效。
原因二:
据沈刚介绍,C的存储过程使用的表被 drop 后在重建,也会
造成这种现象。
原因三:
C 过程的名称要注意保证前 8 位是唯一的。是由于
syscat.packages 的系统表中的 pkgname 这个字段只有 8 位长,而 C 的
过程的名称就是作为 pkgname 的,所以 C 过程的前 8 位要保证是唯一
的,否则会互相覆盖,只有后建的过程才可以用。

其他原因还不知道
解决办法:
原因一:
在 function中按不同database来创建目录。
在写创建脚本时,注意将不同文件放在个database对应的目
录下。

原因二:
rebind该存储过程。
原因三:
保证前8 位是唯一

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】