2011-09-20 142 views
0

我使用DB2Driver在我的代碼一樣DB2 SQLCODE = -243,SQLSTATE = 36001 ERROR

Class.forName("com.ibm.db2.jcc.DB2Driver"); 

和我得到的結果在我的java代碼是滾動敏感的設置。我的SQL查詢看起來像這樣select distinct day , month , year from XXX。這裏表XXX是隻讀爲我正在使用的用戶...所以它給出以下錯誤

com.ibm.db2.jcc.a.SqlException: DB2 SQL Error: SQLCODE=-243, SQLSTATE=36001, SQLERRMC=SQL_CURSH200C3, DRIVER=3.51.90 ..我知道這是隻讀的問題..但是當我嘗試執行相同的查詢在DB2控制中心,它正在

請幫我在這

回答

1

PubLib是你的朋友:-)

SQL0243N
敏感光標無法爲指定的SELECT語句定義遊標名稱>。

說明:

光標<遊標名>被定義爲敏感,但SELECT語句的內容要求DB2構建遊標的臨時結果表,DB2不能保證之外所做的更改這個光標將可見。當查詢的內容使結果表爲只讀時,會發生這種情況。例如,如果查詢包含連接,則結果表是隻讀的。在這些情況下,遊標必須定義爲INSENSITIVE或ASENSITIVE。

該聲明無法處理。

用戶響應:

要麼改變查詢的內容,以產生未只讀,或者改變光標INSENSITIVE或ASENSITIVE的類型的結果表。

如果無法更改遊標類型,請查看物化查詢表的使用。這些如同視圖一樣,但也爲數據提供了臨時後備存儲,以便它不會被查詢類型強制爲只讀。

這是否會有助於您強迫用戶閱讀的情況,我不完全確定,但您可能可以對物化數據和實際數據擁有不同權限(不幸的是,我沒有做很多工作,當然沒有權限被鎖定在只讀級別)。

+0

@ paxdiablo ..如何更改查詢的內容以生成不是隻讀的結果表 – Raj

+1

您需要查看物化查詢。它們就像視圖,但是在對它們進行查詢之後獨立地維護數據。我無法從你的問題中判斷你是否已經爲該用戶標記了_explicitly_只讀表,或者它是否是'distinct'強制臨時表構建。如果前者,物化查詢_may_不起作用(我從來沒有嘗試過)。 – paxdiablo

相關問題