2009年12月16日水曜日

XMLDB

久しぶりの技術DBネタ

Oracleの話ですが、単純に、通常のテーブルをSELECTした結果を
XMLで取る方法は、

select
 dbms_xmlgen.getxml(
 '対象のSELECT文'
 )
from dual

で取れますが、この方法だと、
データXML
と固定のタグで囲まれてしまいます。

で、ROWSET, ROWタグを変更しようと思ったら、
ちょっとストアドを組む必要があります。


declare
 qryCtx DBMS_XMLGEN.ctxHandle;
 result CLOB;

begin
 qryCtx := DBMS_XMLGEN.newContext('対象のSELECT文');

 -- これでROWSETタグを任意の文字に変更
 -- NULLを指定すると、タグがでない。
 DBMS_XMLGEN.SETROWSETTAG(qryCtx, '項目'); 
 -- これでROWタグを任意の文字に変更
 -- NULLを指定すると、タグがでない。
 DBMS_XMLGEN.setRowTag(qryCtx, NULL);   

 result := DBMS_XMLGEN.getXML(qryCtx);

 DBMS_OUTPUT.PUT_LINE(result); -- ここはちょっと無理やり表示した感が。
 DBMS_XMLGEN.closeContext(qryCtx);
end;
/

これで、<項目>データXML</項目>
になります。

0 件のコメント:

コメントを投稿