2011年5月10日火曜日

Oracle PL/SQL XMLデータをFunctionで受け取る2

前回はXMLDOMを使用した形式だったが、Xpathを使用しての処理も可能。


・特定ノードの件数を取得(件数をlvCountに設定・XMLTYPEのデータをpvXmlとする)
 SELECT count(*) INTO lvCount FROM TABLE(XMLSequence(pvXml.extract('/STUDENTS/STUDENT')));
  各要素へは以下のようにアクセス可能
FOR i IN 1 .. lvCount LOOP
  pvXml.extract('/STUDENTS/STUDENT['|| i || ']');
END LOOP;

・テキストノードの値取得(注意事項あり。他記事参照)
pvXml.extract('/STUDENTS/STUDENT/NAME/text()').getStringVal();
・属性値の取得
pvXml.extract('/STUDENTS/STUDENT/@ID').getStringVal();
※なお、単純なextractの結果はXMLTYPEとして扱われる。複数の形式のデータが混在する場合は、これを使用し切り分けることが可能
xmlTeacher := pvXml.extract('/PEOPLE/TEACHERS');
xmlStudent := pvXml.extract('/PEOPLE/STUDENTS');








0 件のコメント:

コメントを投稿