XMLType
まず、XML を列に格納する方がおそらく簡単でしょう。CLOB
それ以外の場合は、データを解析するために、実行時に を に変換する必要がありXMLType
ます。
ただし、から始めていると仮定すると、次のCLOB
ようなことができるはずです
select xmltype( xml_response ).extract('//stat/text()',
'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ' ||
'xmlns="http://xmlns.oracle.com/orawsv/DBUSER/MYSERV').getStringVal()
from foo
データを抽出します。私のテストでは、CLOB
SQL> create table foo(
2 xml_response clob
3 );
Table created.
サンプルデータを挿入しました
SQL> insert into foo values( '<?xml version="1.0" ?>
2 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
3 <soap:Body>
4 <GET_PERMITOutput xmlns="http://xmlns.oracle.com/orawsv/DBUSER/MYSERV">
5 <RETURN>
6 <STATUS_CODES>
7 <stat>REC</stat>
8 </STATUS_CODES>
9 </RETURN>
10 </GET_PERMITOutput>
11 </soap:Body>
12 </soap:Envelope>');
1 row created.
そして、それを抽出するクエリを書きました
SQL> ed
Wrote file afiedt.buf
1 select xmltype( xml_response ).extract('//stat/text()',
2 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ' ||
3 'xmlns="http://xmlns.oracle.com/orawsv/DBUSER/MYSERV').getStringVal()
4* from foo
SQL> /
XMLTYPE(XML_RESPONSE).EXTRACT('//STAT/TEXT()','XMLNS:SOAP="HTTP://SCHEMAS.XMLSOA
--------------------------------------------------------------------------------
REC