我有一个名为" device"的表。其中包含一个名为" XMLdoc"的列。 CLOB数据类型。我想更新值字段。
名称=" DropDirectory"值=""
/*Following is the sample XML:*/
<?xml version="1.0" encoding="UTF-8"?>
<Attributes>
<Attribute DataType="Text-40" DisplayName="PrinterAlias"
IsNotDeletable="Y" Modifiable="Y" Name="PrinterAlias" Value="QALABHP"/>
<Attribute DisplayName="PrintServerHostName"
Name="PrintServerHostName" Value="zzzzz"/>
<Attribute DisplayName="PrintServerPort" Name="PrintServerPort" Value="2723"/>
<Attribute DataType="Text-40" DisplayName="DropDirectory"
IsNotDeletable="Y" Modifiable="Y" **Name="DropDirectory" Value=""/>
</Attributes>
答案 0 :(得分:1)
您可以按以下方式更新:
选择
SELECT extract(xmltype(col1), '/Attributes/Attribute[@Name="DropDirectory"]/@Value')
FROM test_clob;
输出:
SQL> SELECT extract(xmltype(col1), '/Attributes/Attribute[@Name="DropDirectory"]/@Value')
FROM test_clob;
EXTRACT(XMLTYPE(COL1),'/ATTRIBUTES/ATTRIBUTE[@NAME="DROPDIRECTORY"]/@VALUE')
--------------------------------------------------------------------------------
更新
UPDATE test_clob
SET col1 = UPDATEXML(xmltype(col1),
'/Attributes/Attribute[@Name="DropDirectory"]/@Value',to_char('google.com')).getClobVal()
输出:
SQL> /
EXTRACT(XMLTYPE(COL1),'/ATTRIBUTES/ATTRIBUTE[@NAME="DROPDIRECTORY"]/@VALUE')
--------------------------------------------------------------------------------
google.com
注意:将我的tablename和columnname替换为我的。
答案 1 :(得分:0)
您没有指定您的Oracle版本。我假设它是11g ..(注意:如果你使用12c,你应该使用XQuery)。
这里我将Value属性更新为new_value。
select xmlserialize(content updatexml(xmltype(
'<Attributes>
<Attribute DataType="Text-40" DisplayName="PrinterAlias"
IsNotDeletable="Y" Modifiable="Y" Name="PrinterAlias" Value="QALABHP"/>
<Attribute DisplayName="PrintServerHostName"
Name="PrintServerHostName" Value="zzzzz"/>
<Attribute DisplayName="PrintServerPort" Name="PrintServerPort" Value="2723"/>
<Attribute DataType="Text-40" DisplayName="DropDirectory"
IsNotDeletable="Y" Modifiable="Y" Name="DropDirectory" Value=""/>
</Attributes>'), '/Attributes/Attribute[@Name="DropDirectory"]/@Value', 'new_value'))
from dual
结果(CLOB):
<Attributes>
<Attribute DataType="Text-40" DisplayName="PrinterAlias" IsNotDeletable="Y" Modifiable="Y" Name="PrinterAlias" Value="QALABHP" />
<Attribute DisplayName="PrintServerHostName" Name="PrintServerHostName" Value="zzzzz" />
<Attribute DisplayName="PrintServerPort" Name="PrintServerPort" Value="2723" />
<Attribute DataType="Text-40" DisplayName="DropDirectory" IsNotDeletable="Y" Modifiable="Y" Name="DropDirectory" Value="new_value" />
</Attributes>