LPX-00607 для ora: содержится в Java, но не в sqlplus - PullRequest
3 голосов
/ 21 марта 2010

Я пытаюсь выполнить несколько SQL-запросов из Oracle 11g, и у меня возникают проблемы с использованием ora:contains. Я использую реализацию Spring JDBC, и мой код генерирует оператор sql:

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

1 Ответ

1 голос
/ 21 марта 2010

Похоже, что в вашей декларации пространства имен есть орфографическая ошибка:

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

Если это действительно опечатка в вашем коде (а не просто в вашей публикации здесь), это не помешает исправить это.

...