CLOB 데이터 유형 인 RESPONSE_XML 컬럼이있는 SOAP_MONITORING 테이블이 있습니다. 이 열에는 큰 xml 문자열이 저장됩니다. 이 XML 문자열에서 노드 이름과 노드 값을 가져 오려고합니다. 내가 201501070917439804
인 SUBSCRIPTION_ID
을 얻기 위해이 열을 조회 할Oracle SQL 쿼리를 사용하여 XML에서 특정 노드 이름과 해당 값을 선택하는 방법은 무엇입니까?
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:placeShopOrderResponse xmlns:ns="http://service.soap.CDRator.com">
<ns:return xmlns:ax2133="http://signup.data.soap.CDRator.com/xsd" xmlns:ax2134="http://core.signup.data.soap.CDRator.com/xsd" xmlns:ax2127="http://data.soap.CDRator.com/xsd" xmlns:ax2129="http://webshop.data.soap.CDRator.com/xsd" xmlns:ax2130="http://core.data.soap.CDRator.com/xsd" xmlns:ax2140="http://core.result.service.soap.CDRator.com/xsd" xmlns:ax2139="http://result.service.soap.CDRator.com/xsd" xmlns:ax2147="http://webshop.result.service.soap.CDRator.com/xsd" xmlns:ax2148="http://mandate.result.service.soap.CDRator.com/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax2147:PlaceShopOrderResultDTO">
<ax2130:id xsi:nil="true" /><ax2140:description>SOAP_GLOBAL_SUCCESS</ax2140:description>
<ax2147:subscriptions xsi:type="ax2127:SubscriptionDTO"><ax2130:id>201501070917439804</ax2130:id>
<ax2130:id>201501070917439804</ax2130:id>
</ns:return></ns:placeShopOrderResponse>
</soapenv:Body>
</soapenv:Envelope>
: 여기 내 XML이다. 나는 XML에서 노드 값을 얻기 위해 이러한 쿼리를 실행하기 위해 새로운 아주 많이 나는 위의 질의
SELECT extractvalue(RESPONSE_XML, '/*/ax2130/*/id/@value')
FROM SOAP_MONITORING where WEB_SERVICE_NAME='RatorWebShopService' and WEB_METHOD_NAME='placeShopOrder'
을 시도했지만 오류
ORA-00932: inconsistent datatypes: expected - got -
00932. 00000 - "inconsistent datatypes: expected %s got %s"
을 받았다.
빠른 대답은 'XMLType (RESPONSE_XML)'을 사용하기는하지만 이것은 유효한 XML로 보이지 않습니다 :'LPX-00225 : end-element tag "ns : return"은 start-element tag와 일치하지 않습니다 "ax2147 : . 끝 태그가없는 것처럼 보입니까? (또한 ['extractvalue()'는 더 이상 사용되지 않습니다.] (https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions061.htm)). –
실제로 그것의 거대한 XML과 나는 그것으로부터 약간의 부분을 삭제했다. 그래서 여기에 보여줄 수 있습니다. XMLType을 사용하여 쿼리를 알려주시겠습니까? 내 열 데이터 형식이 CLOB 인 것처럼 작동합니까? –
당신이 봐야한다고 생각 [여기] (http://stackoverflow.com/questions/4884421/oracle-10g-extract-data-select-from-xml-clob-type) – Aramillo