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

Identifier 'EXTRACTVALUE' must be declaredCompilation failed

我尝试将 xml 数据检索到变量,但出现错误 "identifier 'EXTRACTVALUE' must be declaredCompilation failed"

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>

当我尝试插入时,当我输入 VarConverstionFact = 0 时我没有收到任何数据错误,如果我 VarConverstionFact = -53 我收到无效数字错误。

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

从 DUAL 进入 VarConverstionFact;

我在得到这个答案后使用了它,我的包没有错误地被编译但是当我尝试在上面插入时 xml 我得到了前面提到的错误(上面)

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