我正在使用一个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 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;