먼저, 내가 PL/SQL 블록하지만모든
그래서 행운을 통해 XML 태그를 조작에 관한 모든 관련 질문에 대해 참조 오라클 XML 데이터 및 업데이트 값을 저장 CLOB 열에서 특별한 서비스를 검색, 내 requiremet이다 : 나는
이예를 여기
<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 값을 가진 모든 테이블 행을 업데이트 할 선형 방식으로하지 않습니다 XML 형태로 데이터를 갖는 CLOB 열이있는 테이블이 학생 ID를 기준으로 'A'로 변경
하지만, 여기에 태그 모두 만 BATCH_ID이며,이 < 2017,1001>처럼 독특한 쌍 될 것입니다 첫번째 체크 BATCH_ID 필요하고 여기에 <batch_id, student>
학생 ID에 해당하는 확인 일반적이다, 그래서 < 2017,1002>
나는 스크립트에 병합을 통해 시도했지만 전체 XML 데이터
에서 특정 태그를 검색 할 어떻게 든 수없는 열 스터드와 스크립트 이하Student_Temp
표를 참조하시기 바랍니다 ent_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 파일의 일부를 게시했습니다. 그러나 태그 계층 구조가 동일하지 않은 경우가있을 수 있으며, 위에서 언급 한 쿼리가 작동하지 않을 수 있습니다. –
@KiranChoudhary. 바꾸기는 태그 계층 구조와 아무 관련이 없습니다. 당신은 시도 할 수 있습니다. 나에 따르면 그것은 모든 경우에 작동해야합니다. – XING