------------------
------------------
问题:我写了一存储过程来生成xml,在开发机器运行完全正常,但挪到测试机器上却无法创建,报编译错。查了很久也没有查出来,有达人能帮忙看一下吗?
------------------
------------------
存储过程:CREATE OR REPLACE PROCEDURE "INITIAL_LAC"
AS
cursor c_table_info is
select LAC, isActive,Validity_EndTime from lactemp;
v_lac varchar2(200);
v_isactive varchar2(200);
v_validity_endtime varchar2(200); doc XMLDOM.DOMDOCUMENT;
doc_node XMLDOM.DOMNODE;
root_node XMLDOM.DOMNODE;
service_node XMLDOM.DOMNODE;
serviceattributes_node XMLDOM.DOMNODE;
item_node XMLDOM.DOMNODE; root_elmt XMLDOM.DOMELEMENT;
service_elmt XMLDOM.DOMELEMENT;
serviceattributes_elmt XMLDOM.DOMELEMENT;
item_elmt XMLDOM.DOMELEMENT;
item_text XMLDOM.DOMTEXT;begin
doc := XMLDOM.NEWDOMDOCUMENT;
doc_node := XMLDOM.MAKENODE(doc);
xmldom.setVersion(doc, '1.0');
xmldom.setCharset(doc, 'UTF-8'); --root node
root_elmt := XMLDOM.CREATEELEMENT(doc,'Services');
XMLDOM.SETATTRIBUTE(root_elmt,'xmlns:xsi ','http://www.w3.org/2001/XMLSchema-instance');
XMLDOM.SETATTRIBUTE(root_elmt,'xsi:noNamespaceSchemaLocation ','SlaM_Service.xsd');
root_node:=XMLDOM.APPENDCHILD(doc_node, XMLDOM.MAKENODE(root_elmt));
open c_table_info;
loop
fetch c_table_info into v_lac, v_isactive,v_validity_endtime;
exit when c_table_info%notfound; --XML Service tag
service_elmt := XMLDOM.CREATEELEMENT(doc,'Service');
XMLDOM.SETATTRIBUTE(service_elmt,'id',v_lac);
XMLDOM.SETATTRIBUTE(service_elmt,'name',v_lac);
service_node :=XMLDOM.APPENDCHILD(root_node, XMLDOM.MAKENODE(service_elmt)); --XML description tag
item_elmt :=XMLDOM.CREATEELEMENT(doc,'description');
item_node :=XMLDOM.APPENDCHILD(service_node, XMLDOM.MAKENODE(item_elmt));
item_text := XMLDOM.CREATETEXTNODE(doc,'');
item_node:=XMLDOM.APPENDCHILD(service_node, XMLDOM.MAKENODE(item_text)); --XML ServiceDefinition tag
item_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceDefinition');
XMLDOM.SETATTRIBUTE(item_elmt,'serviceDefinitionId','LAC');
item_node :=XMLDOM.APPENDCHILD(service_node, XMLDOM.MAKENODE(item_elmt)); --XML ServiceAttributes tag
serviceattributes_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceAttributes');
serviceattributes_node :=XMLDOM.APPENDCHILD(service_node, XMLDOM.MAKENODE(serviceattributes_elmt)); --XML ServiceAttribute tag: LAC
item_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceAttribute');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeId','LAC');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeValue',v_lac);
item_node :=XMLDOM.APPENDCHILD(serviceattributes_node, XMLDOM.MAKENODE(item_elmt)); --XML ServiceAttribute tag: isActive
item_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceAttribute');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeId','isActive');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeValue',v_isactive);
item_node :=XMLDOM.APPENDCHILD(serviceattributes_node, XMLDOM.MAKENODE(item_elmt)); --XML ServiceAttribute tag: Validity_EndTime
item_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceAttribute');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeId','Validity_EndTime');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeValue',v_validity_endtime);
item_node :=XMLDOM.APPENDCHILD(serviceattributes_node, XMLDOM.MAKENODE(item_elmt));
end loop;
close c_table_info;
XMLDOM.WRITETOFILE(doc,'UTL_FILE_DIR'||'\initial_lac.xml');
XMLDOM.FREEDOCUMENT(doc);end;------------------
------------------
在创建存储过程时,遇到下面的编译错误,google一大圈也未果:
Error: PLS-00201: identifier 'XMLDOM.DOMELEMENT' must be declared
------------------
------------------
另外,我的oracle版本是11.2.0.3.0 64bit的:
select banner from v$version; Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
"CORE 11.2.0.3.0 Production"
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
------------------
问题:我写了一存储过程来生成xml,在开发机器运行完全正常,但挪到测试机器上却无法创建,报编译错。查了很久也没有查出来,有达人能帮忙看一下吗?
------------------
------------------
存储过程:CREATE OR REPLACE PROCEDURE "INITIAL_LAC"
AS
cursor c_table_info is
select LAC, isActive,Validity_EndTime from lactemp;
v_lac varchar2(200);
v_isactive varchar2(200);
v_validity_endtime varchar2(200); doc XMLDOM.DOMDOCUMENT;
doc_node XMLDOM.DOMNODE;
root_node XMLDOM.DOMNODE;
service_node XMLDOM.DOMNODE;
serviceattributes_node XMLDOM.DOMNODE;
item_node XMLDOM.DOMNODE; root_elmt XMLDOM.DOMELEMENT;
service_elmt XMLDOM.DOMELEMENT;
serviceattributes_elmt XMLDOM.DOMELEMENT;
item_elmt XMLDOM.DOMELEMENT;
item_text XMLDOM.DOMTEXT;begin
doc := XMLDOM.NEWDOMDOCUMENT;
doc_node := XMLDOM.MAKENODE(doc);
xmldom.setVersion(doc, '1.0');
xmldom.setCharset(doc, 'UTF-8'); --root node
root_elmt := XMLDOM.CREATEELEMENT(doc,'Services');
XMLDOM.SETATTRIBUTE(root_elmt,'xmlns:xsi ','http://www.w3.org/2001/XMLSchema-instance');
XMLDOM.SETATTRIBUTE(root_elmt,'xsi:noNamespaceSchemaLocation ','SlaM_Service.xsd');
root_node:=XMLDOM.APPENDCHILD(doc_node, XMLDOM.MAKENODE(root_elmt));
open c_table_info;
loop
fetch c_table_info into v_lac, v_isactive,v_validity_endtime;
exit when c_table_info%notfound; --XML Service tag
service_elmt := XMLDOM.CREATEELEMENT(doc,'Service');
XMLDOM.SETATTRIBUTE(service_elmt,'id',v_lac);
XMLDOM.SETATTRIBUTE(service_elmt,'name',v_lac);
service_node :=XMLDOM.APPENDCHILD(root_node, XMLDOM.MAKENODE(service_elmt)); --XML description tag
item_elmt :=XMLDOM.CREATEELEMENT(doc,'description');
item_node :=XMLDOM.APPENDCHILD(service_node, XMLDOM.MAKENODE(item_elmt));
item_text := XMLDOM.CREATETEXTNODE(doc,'');
item_node:=XMLDOM.APPENDCHILD(service_node, XMLDOM.MAKENODE(item_text)); --XML ServiceDefinition tag
item_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceDefinition');
XMLDOM.SETATTRIBUTE(item_elmt,'serviceDefinitionId','LAC');
item_node :=XMLDOM.APPENDCHILD(service_node, XMLDOM.MAKENODE(item_elmt)); --XML ServiceAttributes tag
serviceattributes_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceAttributes');
serviceattributes_node :=XMLDOM.APPENDCHILD(service_node, XMLDOM.MAKENODE(serviceattributes_elmt)); --XML ServiceAttribute tag: LAC
item_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceAttribute');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeId','LAC');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeValue',v_lac);
item_node :=XMLDOM.APPENDCHILD(serviceattributes_node, XMLDOM.MAKENODE(item_elmt)); --XML ServiceAttribute tag: isActive
item_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceAttribute');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeId','isActive');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeValue',v_isactive);
item_node :=XMLDOM.APPENDCHILD(serviceattributes_node, XMLDOM.MAKENODE(item_elmt)); --XML ServiceAttribute tag: Validity_EndTime
item_elmt :=XMLDOM.CREATEELEMENT(doc,'ServiceAttribute');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeId','Validity_EndTime');
XMLDOM.SETATTRIBUTE(item_elmt,'attributeValue',v_validity_endtime);
item_node :=XMLDOM.APPENDCHILD(serviceattributes_node, XMLDOM.MAKENODE(item_elmt));
end loop;
close c_table_info;
XMLDOM.WRITETOFILE(doc,'UTL_FILE_DIR'||'\initial_lac.xml');
XMLDOM.FREEDOCUMENT(doc);end;------------------
------------------
在创建存储过程时,遇到下面的编译错误,google一大圈也未果:
Error: PLS-00201: identifier 'XMLDOM.DOMELEMENT' must be declared
------------------
------------------
另外,我的oracle版本是11.2.0.3.0 64bit的:
select banner from v$version; Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
"CORE 11.2.0.3.0 Production"
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货