Oracle函数解析XML类型

时间:2018-05-04 19:48:19

标签: xml oracle

我有一个返回数据的表的字段如下:

<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 :(得分:0)

这是一个小小的错字。查询失败,因为您没有表的别名a

SELECT
a.XMLRECORD
INTO MODELS_REGNOS
FROM 
VEHICLES a;