2011-10-19 36 views
0

我在WebSphere中通過Spring連接到SQL Server。我有一段非常簡單的動態SQL(下面),它拋出「遊標未被聲明。」如何解決「遊標未被聲明」來自SQL Server

SELECT TOP 1 
    short_desc shortDescription 
FROM 
    product.prs.PRODUCT_SKN (nolock) 
WHERE 
    prod_sales_div_code = 'XXX' 
    AND product_nbr = ? 

其中一個與數據源相關的設置是「選擇模式」是「光標」。我不確定我需要做什麼來解決錯誤。

編輯調用代碼: findShortDescriptionQuery.get().findObjectByNamedParam(of("productNumber", productId))

+0

您對「數據源」的最後一句話讓我相信您正在談論客戶端設置?當你從SSMS運行這個查詢時,你會得到這個錯誤嗎?如果不是,您可能想要更改您的問題,以便更加以客戶爲中心。 –

+0

我不明白SSMS中的錯誤。我覺得它必須是Spring或WebSphere設置 – Ray

+0

或者可能是驅動程序版本或其他東西.. – Ray

回答

0

我完全刪除了「nolock」指令以及「TOP 1」,問題就消失了。這讓我懷疑它與JDBC驅動程序有關。

這種解決方法並不理想,但對我的目的來說工作得很好。

0

試着說WITH (nolock)而不僅僅是(nolock)。最新版本的sql server不再支持後一種語法。

+0

我加了''並且重新部署了;我犯了同樣的錯誤。 – Ray

0

檢查您正在使用的服務器上的哪個數據庫。如果你在同一臺服務器上有不同的數據庫,你的sql客戶端默認通常會選擇「master」或者其他的來運行查詢,如果你沒有指定的話。在查詢之前選擇包含正在查詢的表格或使用USE <dbname> GO的表格將處理該錯誤。