오라클 데이터베이스 수집의 CLOB 필드 값은 XML 형식 문자열 지정된 노드에 저장

: 참조  대량 파싱 된 XML 문자열 CLOB 내부의 필드에 커서를 사용하여 Oracle 저장 프로 시저

  배경 : 저장 프로 시저를 작성, 당신은 정보 양식 제출을 얻을 필요가있다. 정보 문자열이 XML 형식으로 그것을 저장하는 방법에 필드 dataxml의 양식 COLB 유형에? 바이 컨텐츠를 참조하면, 기록 기능 (작용), XML 형식 문자열 파라미터 (dataxml 값)과 소정의 노드 (노드 명), 특정 노드 (nodeValue를)의 값을 반환한다.

  코딩 :

시작을 달성 --get_xml_nodeValue

RETURN VARCHAR2 펑션 get_xml_nodeValue (xmlStr CLOB 노드 이름 VARCHAR2)를 작성 OR REPLACE  IS

  - 만들기 XML 파서 인스턴스 xmlparser.Parser
  xmlPar xmlparser.Parser = xmlparser.newParser,

  -는 DOM 문서의 정의
  xDoc의 xmldom.DOMDocument;

  - 항목의 정의는 변수의 자식 노드 번호
  lenItme INTEGER;

  - 정의 노드의 목록에서 노드 항목을 저장 그들은
  itemNodes xmldom.DOMNodeList;

  - 정의 노드, 노드가 단일 항목 저장
  itemNode xmldom.DOMNode,

  valueReturn VARCHAR2를 (100);

시작

  XML 문자열에 분석 xmlStr하고있는 xmlPar을 배치 -
  (xmlPar, xmlStr) xmlparser.parseClob;

  - 덤프 데이터 xmlPar DOM 문서
  xDoc = xmlparser.getDocument (xmlPar를)

  - 릴리스 파서 인스턴스
  xmlparser.freeParser (xmlPar)

  - 모든 항목 노드의 개요
  itemNodes = xmldom.getElementsByTagName을 (xDoc, 노드 명)

  - 노드 획득 한 아이템의 수
  lenItme = xmldom.getLength (itemNodes)

  - 아니하는 경우 라벨, 반환이 비어
  는 IF lenItme = 0 THEN

    valueReturn : = '';

  ELSE

    - 목록 항목 노드의 첫 번째 노드를 취득
    itemNode = xmldom.item (itemNodes, 0);

    - 모든 자식 노드의 값을 가져옵니다
    valueReturn = xmldom.getNodeValue (xmldom.getFirstChild (itemNode))

  단부는 IF;

  - 분리 DOM
  xmldom.freeDocument (xDoc);

  RETURN valueReturn;

END get_xml_nodeValue;

목적을 달성 --get_xml_nodeValue

  테스트 전화 :

  表 : FORM_DATA;

  字段 : DATAXML, 字段 值 "<데이터> <ID> 1 </ ID> <이름> 张三 </ 이름> <전화> 17700000000 </ 전화> <ID_NUMBER> 410527999909099999 </ ID_NUMBER> </ 데이터>";

  질의 1 : form_data F에서 get_xml_nodeValue (f.dataxml, '이름')를 선택하고, 결과 : 장을;

  질의 2 : form_data F에서 get_xml_nodeValue (f.dataxml, '전화')를 선택하고, 결과 : 17,700,000,000를;

  질의 3 : form_data F에서 get_xml_nodeValue (f.dataxml, 'ID_NUMBER')를 선택하고, 결과 : 410527999909099999.

 

완료!

추천

출처www.cnblogs.com/zcx-94/p/11913223.html