Dbms_Xmlquery

 
0
 
Oracle
ava
chea | 19.04.2006, 09:12
Всем привет может кто то сталкивался с такой проблемой, или может подсказать куда копать.

Формирую XML из 3 таблиц и помещаю в таблицу test_lob(cdata clob).
Процедура формирования XML
is
ctx dbms_xmlquery.ctxHandle;
xml XMLtype;
c clob;
c2 clob;
c3 clob;
begin

ctx := dbms_xmlquery.newContext('select * from routinginf');
dbms_xmlquery.setRowsetTag(ctx, 'RoutingInfs');

xml := XMLType(dbms_xmlquery.getXML(ctx));
c := xml.extract('/RoutingInfs').getClobVal();
dbms_xmlquery.closeContext(ctx);
---
ctx := dbms_xmlquery.newContext('select * from edheader');
dbms_xmlquery.setRowsetTag(ctx, 'EDHeaders');

xml := XMLType(dbms_xmlquery.getXML(ctx));
c2 := xml.extract('/EDHeaders').getClobVal();
dbms_xmlquery.closeContext(ctx);

dbms_lob.writeAppend(c, dbms_lob.getLength(c2), c2);
---
ctx := dbms_xmlquery.newContext('select * from emp');
dbms_xmlquery.setRowsetTag(ctx, 'Bodys');

xml := XMLType(dbms_xmlquery.getXML(ctx));
c3 := xml.extract('/Bodys').getClobVal();
dbms_xmlquery.closeContext(ctx);

dbms_lob.writeAppend(c, dbms_lob.getLength(c3), c3);

delete test_lob;
insert into test_lob(cdata) values ©;
end;


В результате получаю...

<RoutingInfs>
<ROW num="1">
<ENVELOPEID>4775fb3a-fcc8-43ef-a948-111</ENVELOPEID>
<SENDERINFORMATION>smtp://som/broker</SENDERINFORMATION>
<RECEIVERINFORMATION>smtp://mail/eds</RECEIVERINFORMATION>
</ROW>
</RoutingInfs>
<EDHeaders>
<ROW num="1">
<XMLNS>&quot;urn:customs.ru:Envelope:EDHeader:1.0&quot;</XMLNS>
<MESSAGETYPE>CMN.00004 </MESSAGETYPE>
<PROCCESSID>9dt0u0b7-e946-4e69-8af4-4545c</PROCCESSID>
<PARTICIPANTID>1046164065432</PARTICIPANTID>
</ROW>
</EDHeaders>
<Bodys>
<ROW num="1">
<EMPNO>10</EMPNO>
<ENAME>SCOTT</ENAME>
<JOB>MANAGER</JOB>
<HIREDATE>12/17/1980 0:0:0</HIREDATE>
<SAL>12000</SAL>
<COMM>45</COMM>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW num="2">
<EMPNO>20</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7785</MGR>
<HIREDATE>5/23/1987 0:0:0</HIREDATE>
<SAL>30000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW num="3">
<EMPNO>20</EMPNO>
<ENAME>ИВАН</ENAME>
<JOB>админ</JOB>
<MGR>8000</MGR>
<HIREDATE>5/3/1987 0:0:0</HIREDATE>
<SAL>12500</SAL>
<COMM>12</COMM>
<DEPTNO>20</DEPTNO>
</ROW>
</Bodys>

Данный файл при просмотре даёт ошибку, так как нет главного тэга. А мне на выходе необходимо получить вот так..
<Envelope xmlns=3D"http://www.w3.org/2001">
<Header>
<RoutingInfs>
<XMLNS>3D&quot;urn:customs.ru:Envelopes:RoutingInf:1.0&quot;</XMLNS>
<ENVELOPEID>4775fb3a-fcc8-43ef-a948-833adb93fd95</ENVELOPEID>
<SENDERINFORMATION>smtp://somefirm.ru/broker</SENDERINFORMATION>
<RECEIVERINFORMATION>smtp://mail.customs.ru/eds</RECEIVERINFORMATION>
</RoutingInfs>
<EDHeaders>
<XMLNS>&quot;urn:customs.ru:Envelope:EDHeader:1.0&quot;</XMLNS>
<MESSAGETYPE>CMN.00004 </MESSAGETYPE>
<PROCCESSID>9dt0u0b7-e946-4e69-8af4-kffey25298dc</PROCCESSID>
<CUSTOMCODE>10122090</CUSTOMCODE>
<PARTICIPANTID>1046164065432</PARTICIPANTID>
</EDHeaders>
</Header>
<Bodys>
<ROW num="1">
<EMPNO>10</EMPNO>
<ENAME>SCOTT</ENAME>
<JOB>MANAGER</JOB>
<HIREDATE>12/17/1980 0:0:0</HIREDATE>
<SAL>12000</SAL>
<COMM>45</COMM>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW num="2">
<EMPNO>20</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7785</MGR>
<HIREDATE>5/23/1987 0:0:0</HIREDATE>
<SAL>30000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW num="3">
<EMPNO>20</EMPNO>
<ENAME>ИВАН</ENAME>
<JOB>админ</JOB>
<MGR>8000</MGR>
<HIREDATE>5/3/1987 0:0:0</HIREDATE>
<SAL>12500</SAL>
<COMM>12</COMM>
<DEPTNO>20</DEPTNO>
</ROW>
</Bodys>
</Envelope>

Может мне кто нибудь подскажет как
1) добавить главный тэг <Envelope> и как
2)<RoutingInfs> и <EDHeaders> поместить в <Header>
:stena
Comments (1)
ava
Paradox | 11.10.2006, 15:18 #
опять поздновато но тем не менее ответов вроде нет
сюда не заглядывали случайно ? там много чего интересного smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Paradox   chea
advanced
Submit