ora的LPX-00607:包含在java中但不包含sqlplus

问题描述:

我正在尝试使用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

你似乎有一个拼写错误在您的命名空间声明:

'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