2010-03-21 70 views
3

我正在嘗試使用Oracle 11g進行一些SQL查詢,並且在使用ora:contains時遇到問題。我使用Spring的JDBC實現和我的代碼生成的SQL語句:ora的LPX-00607:包含在java中但不包含sqlplus

select * 
    from view_name 
where column_a = ? 
    and column_b = ? 
    and existsNode(xmltype(clob_column), 
        'record/name [ora:contains(text(), "name1") > 0]', 
        'xmlns:ora="http://xmlns.oralce.com/xdb"') = 1 

我已明顯去掉實際的視圖/列名,但是當我複製到SQLPLUS和替代的隨機值,選擇正確執行。當我嘗試在我的DAO代碼運行它,我得到這個堆棧跟蹤:

org.springframework.jdbc.UncatergorizedSQLException: PreparedStatementCallback; 
uncatergorizedSQLException for SQL [the big select above]; SQL state [99999]; 
error code [31011]; 
ORA-31011: XML parsing failed. 
ORA-19202: Error occured in XML processing 
LPX-00607: Invalid reference: 'contains';nested exception is java.sql.SQLException: 
ORA-31011: XML parsing failed 
ORA-19202: Error occured in XML processing 
LPX-00607: Invalid reference: 'contains' 

(繼續在這樣一段時間....)

我認爲這是值得一提的是,我使用Maven並且有可能我錯過了這個所需的一些依賴。對不起,這篇文章太長了,但我想在太多的信息方面犯錯。

感謝您抽出寶貴的時間來閱讀這至少=)

-Windle

+0

感謝您編輯小馬。這是我的第一個問題,我想我沒有閱讀那邊的橙色盒子。=) – Windle 2010-03-21 05:10:57

回答

1

你似乎有一個拼寫錯誤在您的命名空間聲明:

'xmlns:ora="http://xmlns.oralce.com/xdb"' 
          ^^ 

如果這真的是一個在你的代碼中輸入錯誤(而不僅僅是在你的帖子中),修復它不會有什麼壞處。

+0

明天我開始工作時我會驗證它,但我認爲你可能發現了問題。代碼位於獨立網絡中,因此我必須將其打印出來並重新輸入,但我找到了我的打印版本,並且它有相同的錯字。希望這是唯一的問題。 – Windle 2010-03-21 20:01:32

+0

就是這樣。我猜sqlplus已經知道ora命名空間,甚至沒有查找它。謝謝APC – Windle 2010-03-23 02:31:18

相關問題