必须声明标识符 '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
我尝试将 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