Oracle 将数据添加到xml时出错
我正在使用一个plsql块,它有下面的代码,并且在if条件下给我一个错误 错误:-ORA-31020:不允许该操作,原因:无效的pl/sql DOM句柄Oracle 将数据添加到xml时出错,oracle,Oracle,我正在使用一个plsql块,它有下面的代码,并且在if条件下给我一个错误 错误:-ORA-31020:不允许该操作,原因:无效的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 CONSTAN
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;
你能告诉我为什么会弹出这个错误吗
我已经调试了这个条件,在此之前,如果我有通过这个过程提交的所有相关数据,我的数据库版本是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;
在将文档传递到过程之前,需要通过createdocument函数创建文档
您可以发布调用此代码的代码吗?根据误差,,p_doc可能没有正确初始化。这是调用此过程的代码。我已经分配了dbms_xmldom.domdocument类型的变量l_doc,并将其传递给过程。实际上,这部分代码使用我的旧逻辑正常运行,我正在尝试在我的旧逻辑中添加新的结构,这部分代码在那里工作很好。那么,尽管我正在使用旧的逻辑构建XML,但给出的错误是什么呢?