DB2 SQL0440N錯誤的處理

症狀:sql

測試部的同事在一臺PC上部署了一個DB2 v8.2,同時在這臺PC上部署了TOMCAT,上面跑WebService。數據庫

她修改了系統時間,改了N次,有將來的時間,也有過去的時間。函數

問題是在這以後,再使用Quest Central for DB2 v4.9訪問數據庫,就會出SQL0440N錯誤,而用DB2控制中心則正常。測試

解決:spa

見轉載的下文:紅字部分。操作系統

結論:ci

若是有修改系統時間的需求,那麼不要將數據庫和應用部署在一塊兒。v8

 

轉自:www.ibm.com部署

如何處理 DB2 使用過程當中遇到的SQL0440N 的錯誤?

Document #: 1807544E21000

Body:

[標題] 如何處理 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 自帶函數的建立時間便可。產品

相關文章
相關標籤/搜索