Я использую блок plsql, который имеет код ниже и дает мне ошибку при условии if.Добавление данных в xml дает ошибку
ошибка: - ORA-31020: Операция не допускается, Reason: Invalid PL/SQL DOM обрабатывать
PROCEDURE add_to_xml(
p_doc IN OUT dbms_xmldom.domdocument ,
p_node_parent IN dbms_xmldom.domnode ,
p_table IN xml_tabtype)
IS
k_routine CONSTANT VARCHAR2(255) := gk_package||'add_to_xml';
l_stmt VARCHAR2(512);
l_node_child dbms_xmldom.domnode;
l_txt_node dbms_xmldom.domnode;
l_elem dbms_xmldom.domelement;
BEGIN
FOR i IN p_table.first..p_table.last
LOOP
l_elem := dbms_xmldom.createelement(doc => p_doc , tagname => p_table(i).tagname);
l_node_child := dbms_XMLDom.appendChild(p_node_parent , dbms_XMLDom.makeNode(l_elem));
IF p_table(i).val IS NOT NULL THEN
l_txt_node := dbms_xmldom.appendchild(l_node_child , dbms_xmldom.makenode(dbms_xmldom.createtextnode(p_doc , p_table(i).val)));
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('error in add_to_xml'||SQLCODE||sqlerrm);
END add_to_xml;
вы можете, пожалуйста, почему эта ошибка всплывающие окна?
меня отлаживать это и раньше, если состояние у меня есть все данные Релевента пришедших через эту версию базы данных procedure.My равен 11.
Вызывающий код является
declare
t_xml_tab xxcu_hr_interface.xml_tabtype;
l_doc dbms_xmldom.domdocument;
l_top_node dbms_xmldom.domnode;
l_node_top_detail dbms_xmldom.domnode;
l_node_assignment_change dbms_xmldom.domnode;
l_node_hdr_assignment_hdr dbms_xmldom.domnode;
begin
t_xml_tab.delete;
t_xml_tab(t_xml_tab.count + 1).tagname := 'OperasjonsID';
t_xml_tab(t_xml_tab.count).val := 'U'; --Defect 1047
t_xml_tab(t_xml_tab.count + 1).tagname := 'BusinessGroupID';
t_xml_tab(t_xml_tab.count).val := 101;
t_xml_tab(t_xml_tab.count + 1).tagname := 'FirmaID';
t_xml_tab(t_xml_tab.count).val := 984661185;
t_xml_tab(t_xml_tab.count + 1).tagname := 'AnsattNr';
t_xml_tab(t_xml_tab.count).val := 52022;
t_xml_tab(t_xml_tab.count + 1).tagname := 'StartDato';
t_xml_tab(t_xml_tab.count).val := xxcu_hr_common.conv_date('18-AUG-75');
t_xml_tab(t_xml_tab.count + 1).tagname := 'SluttDato';
t_xml_tab(t_xml_tab.count).val := xxcu_hr_common.conv_date('31-DEC-12');
t_xml_tab(t_xml_tab.count + 1).tagname := 'Primaer';
t_xml_tab(t_xml_tab.count).val := 'J';
t_xml_tab(t_xml_tab.count + 1).tagname := 'IntegrationKey1';
t_xml_tab(t_xml_tab.count).val := 11933;
t_xml_tab(t_xml_tab.count + 1).tagname := 'IntegrationKey2';
t_xml_tab(t_xml_tab.count).val := 123;
t_xml_tab(t_xml_tab.count + 1).tagname := 'PersonKategori';
t_xml_tab(t_xml_tab.count).val := 1;
dbms_output.put_line('3.7');
---dbms_output.put_line('3.7.1 t_xml_tab'||t_xml_tab(t_xml_tab.count + 1).tagname);
xxcu_hr_interface.add_to_xml(p_doc => l_doc,
p_node_parent => l_node_hdr_assignment_hdr,
p_table => t_xml_tab);
--dbms_output.put_line(l_doc);
exception
when others then
dbms_output.put_line('The error is :'||sqlcode||sqlerrm);
end;
Вы можете разместить свой код, который вызывает этот код? Основываясь на ошибке, p_doc, возможно, не был правильно инициализирован. – Nick
это код вызывает эту процедуру – user2614856