Функция Oracle для анализа типа XML - PullRequest
0 голосов
/ 04 мая 2018

У меня есть одно из полей таблицы, возвращающей данные следующим образом:

<row id="12345">
<car>BMWX1-546</car>
<car>BMWX2-765</car>
</row>

Я хочу создать функцию, которая бы помогла мне пройтись и искать в соответствии с моделью транспортного средства, чтобы я мог получить регистрационный номер

Я запустил следующее, но при компиляции я получаю ошибку ORA-00936.

create or replace FUNCTION GET_REG_NO(veh_model VARCHAR2) RETURN VARCHAR2 AS

    MODELS_REGNOS XMLTYPE;
    REG_NO VARCHAR2(100);
    v_count NUMBER(38) := 1;
    BEGIN

        SELECT
        XMLRECORD
        INTO MODELS_REGNOS
        FROM 
        VEHICLES;

        WHILE MODELS_REGNOS.existsNode('//row/car[' || v_count || ']') = 1 LOOP
        REG_NO := MODELS_REGNOS.extract('//row/car[' || v_count || ']/text()').getStringVal();
        v_count := v_count + 1;
        END LOOP;

      RETURN REG_NO ;

    END GET_REG_NO;

1 Ответ

0 голосов
/ 04 мая 2018

Это крошечная опечатка. Запрос не выполняется, потому что у вас нет псевдонима a для таблицы.

SELECT
a.XMLRECORD
INTO MODELS_REGNOS
FROM 
VEHICLES a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...