2013-07-22 3 views
1

xmltype이있는 테이블이 있습니다. XPath를 사용하여 쿼리 할 수 ​​있어야합니다. Xpath와 관련된 where 절 조건을 포함하면 Rails는 어떤 행도 반환하지 않습니다. Rails에서 생성 된 쿼리를 로그에 복사 한 후 독립 실행 형으로 실행하면 예상되는 행이 반환됩니다.xpath가 포함 된 쿼리는 아무런 결과도 반환하지 않습니다.

SELECT * FROM my_table tab WHERE (tab.myxml.existsnode('//MyNode') = 1 

코드 :

select("tab.myxml.getclobval() myxml"). 
from("my_table tab"). 
where("tab.myxml.existsnode(:xp) = 1", :xp=>"//MyNode") 

답변

1

아니 생각이 왜,하지만 난 "= 0!"대신 "= 1"의 existsNode의의를 지정할 때 작동 : 이상한

select("tab.myxml.getclobval() myxml"). 
from("my_table tab"). 
where("tab.myxml.existsnode(:xp) != 0", :xp=>"//MyNode") 
+1

을. 어쩌면 V $ SQL을 질의하여 정확히 어떤 문장이 데이터베이스에 제출되는지 확인해야합니다. 또한 EXISTSNODE 대신 XMLEXISTS를 사용할 수도 있습니다. [[사용되지 않는 기능] (http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions057.htm#i1006711)). –

+0

고마워요, xmlexists 잘 작동합니다. existnodewas는 더 이상 사용되지 않습니다. –

관련 문제