首先,我refered关于通过PL/SQL块,但没有运气搜索在CLOB列特别优惠存储在Oracle中
所以操作XML标签相关的所有问题,XML数据和更新值,我requiremet是:我有一个表与具有XML形式的数据CLOB列这是不以线性方式
请参阅例如
<DATA>
<TAGA>
<TAGB>
<TAGC>
<TAGD>
<TAG1>value1</TAG1>
<TAG2>value2</TAG2>
</TAGD>
**<MAINTAG>
<Name>student_id</Name>
<batch_id>2017</batch_id>
<Values>1001</Values>
</MAINTAG>**
**<MAINTAG>
<Name>student_type</Name>
<batch_id>2017</batch_id>
<Values>B</Values>
</MAINTAG>**
</TAGC>
</TAGB>
</TAGA>
</DATA>
在此以下,我想更新所有与来自“B” student_type值表中的行以'A'为基础的学生编号为
但是,在这里两个标签,只有BATCH_ID是常见的,所以需要先检查BATCH_ID,并检查相应的学生证
这里<batch_id, student>
是将是唯一的对像< 2017,1001>,< 2017,1002>
我通过合并试图进入剧本,但不知何故无法搜索在整个XML数据
特定的标签,请参考下面的脚本的列柱
Student_Temp
表ent_id,BATCH_ID
declare
v_rows number;
begin
for i in 0..99
loop
merge into Student s
using Student_Temp st on
(
st.student_id=s.student_id
and s.sub_id = 3008
)
when matched then
update set s.general_data = replace(s.general_data,'<Values>A</Values>','<Values>B</Values>')
where s.general_data like '%<Value>B</Value>%'
and s.general_data like '%st.batch_id%'
and s.general_data like '%st.student_id%'
and s.general_data like '%student_type%';
end loop;
end;
感谢
我刚刚发布了XML文件的一部分,但可能会出现TAG层次结构不相同的情况,那么上面提到的查询将不起作用 –
@KiranChoudhary。替换与标签层次结构无关。你可以试试。据我说,它应该在所有情况下工作 – XING