dbms_xmldom.appendChild -> ORA-31185
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



dbms_xmldom.appendChild -> ORA-31185 Expand / Collapse
Автор
Сообщение
15.11.2006 16:48
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 11.09.2007 15:58
Сообщ.: 5, Visits: 29
У нас  Oracle - 10.2.0.2.0
O/S: Linux 2.6.9-22.ELsmp #1 i686 i386 GNU/Linux

Хочу добавить  node при помощи DBMS_XMLDOM.appendChild
Мой код:

DECLARE
d dbms_xmldom.DOMDocument;
c dbms_xmldom.DOMDocument;
dn dbms_xmldom.DOMNode;
cn dbms_xmldom.DOMNode;
doc CLOB;
child CLOB;
BEGIN
/*
valiable doc =
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<TicketMessage>
<Header>DDDD </Header>
</TicketMessage>
*/
SELECT struct INTO doc FROM tab;

d := dbms_xmldom.newDOMDocument(doc);
dn := dbms_xmldom.makeNode(d);
dn := dbms_xmldom.getFirstChild(dn);

/*
valiable child =
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Body>
<A>sssss</A>
</Body>
*/

SELECT struct INTO child FROM tab2;

c := dbms_xmldom.newDOMDocument(child);
cn := dbms_xmldom.makeNode(c);
cn := dbms_xmldom.getFirstChild(cn);
dn := dbms_xmldom.appendChild(dn, cn);

END;

-------------------------------------
На Oracle 9i все нормально работает

На Oracle 10g (10.2.0.2.0) дает ошибку
ORA-31185: DOM Nodes do not belong to the same DOM Document 
на строке dn := dbms_xmldom.appendChild(dn, cn);

На oracle/metalink нашла описание бага: Bug No. 4655347:

ORA-31185: DOM NODES DO NOT BELONG TO THE SAME DOM DOCUMENT
The error is valid. - x_target_node := dbms_xmldom.appendChild(x_target_node, ndoc); fails with ORA-31185 becuase x_target_node originates from x_doc_in whereas ndoc originates from x_doc. . DOMDocuments x_doc_in and x_dox were created from separate calls to dbms_xmldom.newDOMDocument

Solution:
Basically the change requirement is that - to avoid the ORA-31185:, using dbms_xmldom.importNode(x_doc_in, ndoc, TRUE);

Но еслим модифицировать код:

С:

c := dbms_xmldom.newDOMDocument(child);
cn := dbms_xmldom.makeNode(c);
cn := dbms_xmldom.getFirstChild(cn);
dn := dbms_xmldom.appendChild(dn, cn);

На:

c := dbms_xmldom.newDOMDocument(child);
cn := dbms_xmldom.makeNode(c);
cn := dbms_xmldom.getFirstChild(cn);
import_node := dbms_xmldom.importNode(c,cn,TRUE);
dn := dbms_xmldom.appendChild(dn, import_node);


Ничего не меняется - получаю туже ошибку 

ORA-31185: DOM Nodes do not belong to the same DOM Document

Сообщ. #907563
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 4:12