标识符' EXTRACTVALUE'必须声明编译失败

时间:2015-06-08 08:46:22

标签: oracle plsql oracle11g oracle-apex plsqldeveloper

我尝试将xml数据转换为变量,但却给出了错误说明"标识符' EXTRACTVALUE'必须声明编译失败"

VarConverstionFact    NUMBER;  
 BEGIN

    VarConverstionFact := TO_NUMBER(ExtractValue(PXML, '/OBJECT/Item/ItemUomLevelsList/ItemUomLevels/ConversionFactor'));

    IF VarConverstionFact > 0 THEN

      SELECT BIZZXE_V2_SCH.SQ_ITEM_ID.NEXTVAL INTO varID FROM DUAL;
      END IF;
END;

这是保存xml节点

 <Item>
<LocationId>0</LocationId>
<Id>0</Id>
 <ItemId>0</ItemId>
<ItemCode>SC12</ItemCode>
<ItemDescription>SCDITEM</ItemDescription>

<ItemUomLevelsList>
  <ItemUomLevels>
    <UomLevelId>1</UomLevelId>
    <UomId>9</UomId>
    <UomLongName>LG</UomLongName>
    <ConversionFactor>-53</ConversionFactor>
    <UomLevelStatus>1</UomLevelStatus>
    <UomLevelSystemUsageTypeId>2</UomLevelSystemUsageTypeId>
    <UomLevelImage>0</UomLevelImage>
    <UomLevelControlsList>
      <UomLevelControls>
        <ControlId>2</ControlId>
      </UomLevelControls>
    </UomLevelControlsList>
    <UomDimensionsList>
      <UomDimensions>
        <DimensionId>14</DimensionId>
        <DimensionValue>12</DimensionValue>
      </UomDimensions>
      <UomDimensions>
        <DimensionId>12</DimensionId>
        <DimensionValue>13</DimensionValue>
      </UomDimensions>
    </UomDimensionsList>
  </ItemUomLevels>
</ItemUomLevelsList>

当我尝试插入i时,如果我将VarConverstionFact = 0,如果我的VarConverstionFact = -53我得到无效数字错误,则没有数据错误。

select to_number(ExtractValue(PXML, '/OBJECT/Item/ItemUomLevelsList/ItemUomLevels/ConversionFactor')) 

INTO VarConverstionFact FROM DUAL;

我用这个作为答案后得到了这个答案我的包装没有错误但是当我尝试插入上面的xml时我得到了错误,这是前面提到的(上面)

1 个答案:

答案 0 :(得分:2)

ExtractValue不是PLSQL函数,只能用作我认为的SQL语句的一部分。

你可以这样做:

select to_number(ExtractValue(PXML, '/OBJECT/Item/ItemUomLevelsList/ItemUomLevels/ConversionFactor')) 
INTO VarConverstionFact FROM DUAL;

VarConverstionFact := PXML.extract('/OBJECT/Item/ItemUomLevelsList/ItemUomLevels/ConversionFactor').getNumberVal();

编辑:我假设PXML是XMLTYPE