Мистика getClobVal()

У меня есть таблица (AKADMIN) со столбцом XMLTYPE с именем XML. Я хотел бы использовать getClobVal() с этим столбцом.

select t.xml.getClobVal() /**/ 
,      t.xml.getClobVal() --
,      t.xml.getClobVal() as clobval
,      t.xml.getClobVal()
from akadmin t where ROWID = 'AAAQc6AAIAAAADDAAA' ;

В наборе результатов первые 4 столбца дают тип CLOB, а пятый столбец XMLTYPE. Я должен ввести любой комментарий или псевдоним после getClobVal(), чтобы исправить (CLOB) тип результата. Почему?

Другая проблема, когда я оставляю псевдоним имени таблицы:

select xml.getClobVal()
from akadmin t where ROWID = 'AAAQc6AAIAAAADDAAA' ;

Он бросает ORA-00904 string: invalid identifier Хммм...

У кого-нибудь есть идеи?

Дополнительная информация о среде: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0; Разработчик PL/SQL 10.0.5.1710

Но попробовал это в нашем приложении Java через OJDBC6 с теми же результатами.


person m_and_m    schedule 20.10.2014    source источник
comment
Вторая часть связана с тем, что из-за точки это выглядит как две части, и первая часть (xml) не может быть разрешена. Включение имени/псевдонима таблицы делает это первой частью. В остальном, как вы определяете типы данных, которые вы возвращаете? Где вы выполняете это и где вы видите типы? Если вы создадите представление из этого (например) и опишете это представление, все четыре столбца будут CLOB. Так что действительно не уверен, что вы делаете...   -  person Alex Poole    schedule 20.10.2014
comment
Я пробовал это: Select xmlsomething.getClobVal() From (Select xml As xmlsomething From AKADMIN_v v Where Rowid = 'AAAQc6AAIAAAADDAAA');   -  person m_and_m    schedule 20.10.2014
comment
Я попробовал исходный выбор в окне SQL PL/SQL Developer. Тип столбцов результатов, отображаемых в сетке результатов PL/SQL Developer.   -  person m_and_m    schedule 20.10.2014
comment
Все они отображаются как <CLOB> в PL/SQL Developer 8.0.1 для базы данных 11gR2. Так что не знаю, видите ли вы ошибку разработчика PL/SQL или ошибку Oracle - возможно, зависит от версии, в зависимости от того, что это такое...   -  person Alex Poole    schedule 20.10.2014


Ответы (1)


Вы должны поместить xml в скобки:

select (xml).getClobVal() from akadmin;

работает на меня

person user3378876    schedule 25.05.2017