我的程序:
DECLARE
l_xmltype XMLTYPE;
l_domdoc dbms_xmldom.DOMDocument;
l_root_node dbms_xmldom.DOMNode;
l_reunion_element dbms_xmldom.DOMElement;
l_reunions_node dbms_xmldom.DOMNode;
l_r_element dbms_xmldom.DOMElement;
l_r_node dbms_xmldom.DOMNode;
l_reunion_element dbms_xmldom.DOMElement;
l_reunion_node dbms_xmldom.DOMNode;
l_course_element dbms_xmldom.DOMElement;
l_course_node dbms_xmldom.DOMNode;
l_eng_element DBMS_XMLDOM.DOMELEMENT;
l_eng_node DBMS_XMLDOM.DOMNODE;
l_tp_element DBMS_XMLDOM.DOMELEMENT;
l_tp_node DBMS_XMLDOM.DOMNODE;
BEGIN
-- Create an empty XML document
l_domdoc := dbms_xmldom.newDomDocument;
-- Create a root node
l_root_node := dbms_xmldom.makeNode(l_domdoc);
-- Create a new node Departments and add it to the root node
--l_reunion_element :=
l_reunions_node := dbms_xmldom.appendChild(l_root_node,dbms_xmldom.makeNode(dbms_xmldom.createElement(l_domdoc, 'donnees_reference_externes' )));
-- réunion
FOR re IN ( select rc.identifiant, nvl(rc.date_report, RC.DATE_REUNION) date_reunion from reunion_course rc where date_reunion = '24/01/2014' )
LOOP
l_r_element := dbms_xmldom.createElement(l_domdoc, 'grep' );
dbms_xmldom.setAttribute(l_r_element, 'ID', re.identifiant);
dbms_xmldom.setAttribute(l_r_element, 'Date', re.date_reunion);
l_r_node := dbms_xmldom.appendChild(l_reunions_node,dbms_xmldom.makeNode(l_r_element));
-- course de la réunion selectionnée
FOR rc in ( select * from course where id_reunion_course = re.identifiant )
LOOP
l_course_element := DBMS_XMLDOM.CREATEELEMENT(l_domdoc, 'ep');
DBMS_XMLDOM.SETATTRIBUTE(l_course_element, 'ID', rc.identifiant);
DBMS_XMLDOM.SETATTRIBUTE(l_course_element,'Prix', rc.nom_prix);
l_course_node := DBMS_XMLDOM.APPENDCHILD(l_r_node, DBMS_XMLDOM.MAKENODE(l_course_element));
FOR rg in ( select SIT.NUMERO_PMU, CH.NOM nom_cheval from situation_engagement_course sit, cheval ch where SIT.ID_CHEVAL = ch.identifiant and sit.id_course = rc.identifiant and SIT.CODE_ETAT = 'PARPR' )
LOOP
l_eng_element := DBMS_XMLDOM.CREATEELEMENT(l_domdoc, 'ap');
DBMS_XMLDOM.SETATTRIBUTE(l_eng_element, 'NomCheval', rg.nom_cheval);
DBMS_XMLDOM.SETATTRIBUTE(l_eng_element,'NPMU', rg.numero_pmu);
l_eng_node := DBMS_XMLDOM.APPENDCHILD(l_course_node, DBMS_XMLDOM.MAKENODE(l_eng_element));
END LOOP;
l_tp_element := DBMS_XMLDOM.CREATEELEMENT(l_domdoc, 'ofr');
DBMS_XMLDOM.SETATTRIBUTE(l_tp_element, 'av_pg', rc.code_type_evenement_pari);
DBMS_XMLDOM.SETATTRIBUTE(l_tp_element,'epba_ofr', 1);
l_tp_node := DBMS_XMLDOM.APPENDCHILD(l_course_node, DBMS_XMLDOM.MAKENODE(l_tp_element));
END LOOP;
END LOOP;
l_xmltype := dbms_xmldom.getXmlType(l_domdoc);
dbms_xmldom.freeDocument(l_domdoc);
dbms_output.put_line(l_xmltype.getClobVal); --------------> in this line ERROR Displays : ORA-06502: PL/SQL: numeric or value error **
END;
谢了。
dbms_output.put_line
有一些限制,在处理大数据时会导致问题:也就是说,大于32K的CLOB不能以这种方式打印,错误为ORA-06502。
如果您实际上并不需要打印clob,只需注释掉这一行,就可以了。
另外,请看这篇StackOverflow文章,它提供了一个基于遍历clob并每次打印出一个较小块的过程的解决方案。
我在执行触发器时遇到以下错误: 请说明问题的原因。 编辑 数据类型:
我实现了一个返回clob数据类型的函数,我希望在DBMS输出中打印结果。不幸的是,我得到了ORA-06502:PL/SQL:numeric或value错误,我认为这是由于dbms_output的大小造成的。 这是密码。 这里有一些东西可以帮助您理解这个问题 1)添加了以下内容来设置缓冲区的大小不受限制,但不起作用… 3)我可以通过执行以下操作来解决这个问题,但我认为这不是一个好的解决方案,因为它执
我得到了 ORA-06502:PL/SQL:以下代码中出现数值或值错误:
正如您所知,由于Oracle11g不支持json,我使用CLOB创建json数据,因为varchar2(32767)大小,但此时我得到了ORA-06502:PL/SQL:numeric或value错误。同时,数据大小为68075。为什么我得到错误,尽管Clob是支持4 gb的数据?
我有一小段代码,抓取一些数据并生成SQL语句,将它们插入Oracle数据库。然后通过Oracle服务器上的JDBC驱动程序执行这些操作。 我遇到的问题是,如果这些语句包含一个TO_BINARY_DOUBLE调用,它们总是对我失败,而不是对我团队中的任何人失败,他们应该和我有完全相同的驱动程序和环境,这是非常奇怪的。 错误是: 希望有人能给我提供一些线索,或者给我指出正确的方向,试着找到它。