Несовместимые типы данных: ожидаемый - полученный - ORA-00932 при попытке использовать XMLTable - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь запросить таблицу, в которой один из столбцов содержит большой объем данных во вложенном XML. Я использовал функцию EXTRACTVALUE() для отображения полей 1-к-1, но есть также ряд полей 1-ко-многим, которые требуют другого подхода.

После некоторого поиска я обнаружил функцию XMLTABLE(), которая, кажется, подходит для этой цели, однако я получаю сообщение об ошибке несовместимых типов данных и не могу обойти его, даже если тип данных столбца - XMLTYPE.

Версия базы данных - Oracle Database 12c Enterprise Edition, выпуск 12.1.0.2.0 - 64 бита

Вот пример XML:

<QuoteData>
    <DataCat1>
        <ProductDistribution>
            <Details>
                <Name>Product1</Name>
                <Amount>24</Amount>
                <Price>100</Price>
            </Details>
            <Details>
                <Name>Product2</Name>
                <Amount>50</Amount>
                <Price>200</Price>  
            </Details>
        </ProductDistribution>
    </DataCat1>
</QuoteData>

Мой запрос:

select 

q.PROD_NAME,
q.PRICE

from DB_PROD_TBL r, xmltable('/QuoteData'
    passing r.PROD_LINE_DATA 
    columns
     PROD_NAME varchar2(50) path '/DataCat1/ProductDistribution/Details/Name',
     PRICE number path '/DataCat1/ProductDistribution/Details/Price')q;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...