2014-10-14 2 views
0

У меня есть запрос видаКак я могу увидеть тип данных столбца, возвращаемого SQL-запросом?

select id, extract(xml, 'Foo/Bar/text()') value 
from mytable; 

Этот запрос работает отлично в SQL Developer, и возвращает то, что, как представляется, столбец CHAR.

Однако программное обеспечение, которое называет этот этот запрос, не играет хорошо с ним, и бросает ошибку:

java.lang.NoClassDefFoundError - oracle/xdb/XMLType 

Так что для того, чтобы отладить это, я желающему знать, что точный тип данных, возвращающий инструкцию extract.

Возможно ли это?

+0

Я считаю, что вы можете найти свой ответ здесь http://stackoverflow.com/questions/1087161/oracle-ident-data-type – kazerm

+0

Разве sql-разработчик не позволяет вам видеть определения таблиц? Это происходит, когда я использую его. Если это проблема с разрешениями, поговорите с вашим dba. –

+0

Вы также можете использовать функцию CAST для ее преобразования в varchar2 – OldProgrammer

ответ

0

Как сказано в комментариях, extractValue() устарел. И если вы используете метод .GetStringVal() на своем extract -ed xmltype, вы получите quot; вместо ", & вместо & и так далее. Поэтому сейчас, на помощь ...

... xmlcast() функция!


Пример 1 - не то, что мы хотим

select xmltype('<xx><value>&amp;&quot;</value></xx>').extract('/xx/value') 
from dual; 

... дает результат xmltype типа.

Пример 2 - еще не то, что мы хотим

select xmltype('<xx><value>&amp;&quot;</value></xx>').extract('/xx/value').getStringVal() 
from dual; 

... дает строку результата ...

<value>&amp;&quot;</value> 

Пример 3 - близко, но до сих пор не то, что мы Желательно

select xmltype('<xx><value>&amp;&quot;</value></xx>').extract('/xx/value/text()').getStringVal() 
from dual; 

... дает строку результата ...

&amp;&quot; 

... тогда ...

Пример 4 - окончательный способ

select xmlcast(xmltype('<xx><value>&amp;&quot;</value></xx>').extract('/xx/value') as varchar2(4000)) 
from dual; 

... дает правильный результат строки ...

&"