首先,我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