`
cppmayi
  • 浏览: 24857 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何处理 DB2 使用过程中遇到的 SQL0440N 的错误?

阅读更多

 

环境:

产品:DB2 UDB
平台:跨平台
版本:v8,v7


问题描述:


在调用 DB2 所自带的函数(如 SUM,MAX 等)时,有时会遇到 SQL0440N 的报错信息,这里介绍导致这一问题发生的一种原因,及其解决问题的方法。


解答:


如果用户在运行包含 DB2 自带函数的 SQL 语句时,如下述使用了 ABS 函数的查询语句:

db2 select prodname, abs(margin) from prodlist

遇到 SQL0440N 的错误:

SQL0440N 在函数路径中找不到名称为 "ABS" 且带兼容自变量的函数。 SQLSTATE=42884

使用命令:

db2 ? sql0440n

查看错误的解释时,得到如下得输出内容:

SQL0440N 找不到具有兼容自变量的类型为“<例程类型>”的名为“<例程名>”的已授权例程。

解释:

当数据库管理器找不到可用来实现引用的例程时,若引用例程 <例程名> ,则会发生此错误。引起此错误的原因有下列几个:



从输出信息中对问题原因的解释可以发现,导致这一问题的原因有多种,当用户将所列示的原因逐条检查后,却发现这些都不是导致自己当前所遇到的 SQL0440N 错误的原因,此时可考虑另外一个 SQL0440N 解释信息中未提到的一种情况:即当函数的创建时间晚于系统的当前时间,同样会出现该报错。

为检查问题,用户可利用下面的 SQL 语句对各函数创建的时间戳选项 CREATE_TIME 进行查询:

db2 select funcschema, funcname, create_time from syscat.functions

如果存在某些函数的创建时间晚于当前系统时间的情况,例如用户误置系统的时间为过去某个时间,而使用的函数的创建时间又晚于这一时间,便会在运行相关 SQL 语句时遇到 SQL0440N 的报错。

解决这一问题的方法很简单,用户只要重新正确地设置操作系统的当前时间,使它晚于 DB2 自带函数的创建时间即可。

 

 

有时候以上方式都无法解决问题,求助其他解决方式。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics