SQL0805N 找不到程序包 ""。说明:不能完成语句,因为未在目录中找到必要的程序包。"" 的格式为:* "pkgschema.pkgname 0Xcontoken",其中一致性标记以十六进制给出。* "pkgschema.pkgname.pkgversion",如果程序包版本为空字符串,那么名称省&nbs...
显示全部SQL0805N 找不到程序包 "<程序包名>"。
说明:
不能完成语句,因为未在目录中找到必要的程序包。
"<程序包名>" 的格式为:
* "pkgschema.pkgname 0Xcontoken",其中一致性标记以十六进制给出。
* "pkgschema.pkgname.pkgversion",如果程序包版本为空字符串,那么名称省
略".pkgversion"。
* "%.pkgname",如果设置了 CURRENT PACKAGE PATH。CURRENT PACKAGE PATH
中模式名的设置是由百分比字符("%")来指示的。
此消息(SQLCODE)的可能原因是:
* 程序包未绑定或已删除。
* 如果试图运行 DB2 实用程序或 CLI 应用程序,那么 DB2 实用程序可能需要
重新绑定至数据库。
* "%.pkgname",如果设置了 CURRENT PACKAGE PATH,但是在 CURRENT PACKAGE
PATH 中的任何模式中都找不到名称为"pkgname"的程序包。
注意,当对给定的 package-schema.package-name 版本标识使用版本标识时,可
能有以相同的程序包模式和程序包名定义的程序包,但是未找到正确的程序包,
原因是现有程序包与请求的版本或一致性标记不一致。程序包必须与程序包名的
所有三个部分相匹配。当正在使用多个版本,导致出现此消息的附加原因为:
* 正在执行的应用程序的版本已预编译、编译和链接,但是未绑定,或已绑定但
是后来删除了该版本的程序包。
* 应用程序已预编译和绑定,但是未编译和/或链接,所以正在执行的应用程序
不是最新的。
* 程序包由与生成编译并链接至应用程序可执行文件的已修改源文件的预编译不
同的源文件预编译生成的绑定文件绑定。
* 新应用程序同与现有的程序包相同的名称(和版本)绑定,这样就替换了现有
的程序包。如果运行与替换的程序包相关联的应用程序,那么将导致此错误。
在所有这些情况下,请求的一致性标记与现有版本的一致性标记不匹配,因此认
为未找到程序包。
无法处理该语句。
用户响应:
指定正确的程序包名或绑定该程序。如果正在运行的应用程序未与数据库绑定,
请与数据库管理员联系以执行必需的绑定。确保正在执行的应用程序或对象模块
是与生成程序包的预编译和绑定相关联的已编译和链接的修改源代码。
如果设置了 CURRENT PACKAGE PATH,那么确保在 CURRENT PACKAGE PATH 中指定
了包括程序包的模式。
可以使用下列 SQL 语句来查询目录以确定是否有程序包的不同版本:
SELECT PKGSCHEMA, PKGNAME, PKGVERSION, UNIQUE_ID
FROM SYSCAT.PACKAGES
WHERE PKGSCHEMA='pkgschema' and PKGNAME='pkgname'.
注意 UNIQUE_ID 列与一致性标记相对应。
如果 DB2 实用程序需要重新绑定至数据库,那么当连接至数据库时,数据库管理
员可以通过从实例的 bnd 子目录发出下列 CLP 命令之一来完成此操作:
* 对于 DB2 实用程序,发出"db2 bind @db2ubind.lst blocking all grant
public"。
* 对于 CLI,发出"db2 bind @db2cli.lst blocking all grant public"。
联合系统用户:确保在适用的数据源上绑定联合服务器所必需的程序包。请参阅
《联合系统指南》,以了解有关将程序包绑定至数据源的更多信息。
sqlcode:-805
sqlstate:51002
收起