CREATE OR REPLACE FUNCTION NC_SS_W (p_xmlStr IN CLOB,
p_modelCode IN VARCHAR2,
p_service_name IN VARCHAR2
)
RETURN VARCHAR2
AS
p_user VARCHAR2(32767);
p_pwd VARCHAR2(32767);
l_service UTL_DBWS.service;
l_call UTL_DBWS.call; l_wsdl_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
p_xml CLOB;
p_xml2 CLOB; l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname; l_ser VARCHAR2(32767);
l_port VARCHAR2(32767);
--l_operation VARCHAR2(32767); l_xmltype_in SYS.XMLTYPE;
l_xmltype_out SYS.XMLTYPE;
-- l_return VARCHAR2(32767);
BEGIN
SS_LOG('22222:' || p_xmlStr );
if p_xmlStr is null then
return 'SUCCESS';
end if;
if(p_service_name is null)then
return '未指定服务名';
end if;
if dbms_lob.getlength(p_xmlStr) < 20 then
return 'SUCCESS';
end if;
------------------------------------
select l_wsdl_url,l_namespace,p_user,p_pwd,l_service_qname,
l_port_qname into
l_wsdl_url,l_namespace,p_user,p_pwd,l_ser,l_port from WEBSERVICE_CONFIG
where JK_NAME = p_service_name;
------------------------------------- --l_service_qname := UTL_DBWS.to_qname(l_namespace, 'NC_ServiceImplService');
l_service_qname := UTL_DBWS.to_qname(l_namespace, l_ser);
--l_port_qname := UTL_DBWS.to_qname(l_namespace, 'NC_ServiceImplPort');
l_port_qname := UTL_DBWS.to_qname(l_namespace, l_port);
l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'writeRecords');
-- l_operation_qname := UTL_DBWS.to_qname(l_namespace, l_operation); l_service := UTL_DBWS.create_service ( wsdl_document_location => URIFACTORY.getURI(
--l_wsdl_url
'http://127.0.0.1:8080/receiveimpl?wsdl'
),
service_name => l_service_qname); l_call := UTL_DBWS.create_call (
service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname);
----------------------------
-- utl_dbws.set_property(l_call,'SOAPACTION_USE','TRUE');
-- utl_dbws.set_property(l_call,'SOAPACTION_URI','urn:writeRecords');
-- utl_dbws.set_property(l_call,'OPERATION_STYLE','document');
-----------------------------------------------
p_xml := replace(p_xmlStr, '<','<');
p_xml2 := replace(p_xml, '>','>');
l_xmltype_in := SYS.XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
<ser:writeRecords xmlns:ser="http://service.calt.emis.com">
<ser:userName>mdm</ser:userName>
<ser:pwd>000000</ser:pwd>
<ser:modelCode>'|| p_modelCode ||'</ser:modelCode>
<ser:xmlStr>'|| p_xml2 ||'</ser:xmlStr>
</ser:writeRecords>
');
l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
request => l_xmltype_in );
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
-- if l_xmltype_out.extract('//return/text()') is null then
--return 'SUCCESS';
--end if;
--RAISE_APPLICATION_ERROR(-20003,'p_xml2:' ||p_xml ||',p_modelCode:' || p_modelCode|| ',l_wsdl_url:' || l_wsdl_url);
Dbms_Output.put_line(l_xmltype_out.getstringval());
l_xmltype_out := XMLTYPE(replace(l_xmltype_out.getstringVal(),'ns:return','return')).
extract('//return');
if l_xmltype_out.extract('//text()') is null then
return 'SUCCESS';
end if;
RETURN l_xmltype_out.extract('//text()').getStringVal();
--<Body><List><XT_SFC_ORDER_HEADER_NC><ID>11111</ID></XT_SFC_ORDER_HEADER_NC></List></Body>
END;
执行成功了,在调用这个函数时,直接报错,报错信息为:
ORA-29540: 类 oracle/jpub/runtime/dbws/DbwsProxy 不存在
求大神支招,需要怎么解决?在网上搜索了一些解决办法,还是没有解决···
p_modelCode IN VARCHAR2,
p_service_name IN VARCHAR2
)
RETURN VARCHAR2
AS
p_user VARCHAR2(32767);
p_pwd VARCHAR2(32767);
l_service UTL_DBWS.service;
l_call UTL_DBWS.call; l_wsdl_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
p_xml CLOB;
p_xml2 CLOB; l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname; l_ser VARCHAR2(32767);
l_port VARCHAR2(32767);
--l_operation VARCHAR2(32767); l_xmltype_in SYS.XMLTYPE;
l_xmltype_out SYS.XMLTYPE;
-- l_return VARCHAR2(32767);
BEGIN
SS_LOG('22222:' || p_xmlStr );
if p_xmlStr is null then
return 'SUCCESS';
end if;
if(p_service_name is null)then
return '未指定服务名';
end if;
if dbms_lob.getlength(p_xmlStr) < 20 then
return 'SUCCESS';
end if;
------------------------------------
select l_wsdl_url,l_namespace,p_user,p_pwd,l_service_qname,
l_port_qname into
l_wsdl_url,l_namespace,p_user,p_pwd,l_ser,l_port from WEBSERVICE_CONFIG
where JK_NAME = p_service_name;
------------------------------------- --l_service_qname := UTL_DBWS.to_qname(l_namespace, 'NC_ServiceImplService');
l_service_qname := UTL_DBWS.to_qname(l_namespace, l_ser);
--l_port_qname := UTL_DBWS.to_qname(l_namespace, 'NC_ServiceImplPort');
l_port_qname := UTL_DBWS.to_qname(l_namespace, l_port);
l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'writeRecords');
-- l_operation_qname := UTL_DBWS.to_qname(l_namespace, l_operation); l_service := UTL_DBWS.create_service ( wsdl_document_location => URIFACTORY.getURI(
--l_wsdl_url
'http://127.0.0.1:8080/receiveimpl?wsdl'
),
service_name => l_service_qname); l_call := UTL_DBWS.create_call (
service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname);
----------------------------
-- utl_dbws.set_property(l_call,'SOAPACTION_USE','TRUE');
-- utl_dbws.set_property(l_call,'SOAPACTION_URI','urn:writeRecords');
-- utl_dbws.set_property(l_call,'OPERATION_STYLE','document');
-----------------------------------------------
p_xml := replace(p_xmlStr, '<','<');
p_xml2 := replace(p_xml, '>','>');
l_xmltype_in := SYS.XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
<ser:writeRecords xmlns:ser="http://service.calt.emis.com">
<ser:userName>mdm</ser:userName>
<ser:pwd>000000</ser:pwd>
<ser:modelCode>'|| p_modelCode ||'</ser:modelCode>
<ser:xmlStr>'|| p_xml2 ||'</ser:xmlStr>
</ser:writeRecords>
');
l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
request => l_xmltype_in );
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
-- if l_xmltype_out.extract('//return/text()') is null then
--return 'SUCCESS';
--end if;
--RAISE_APPLICATION_ERROR(-20003,'p_xml2:' ||p_xml ||',p_modelCode:' || p_modelCode|| ',l_wsdl_url:' || l_wsdl_url);
Dbms_Output.put_line(l_xmltype_out.getstringval());
l_xmltype_out := XMLTYPE(replace(l_xmltype_out.getstringVal(),'ns:return','return')).
extract('//return');
if l_xmltype_out.extract('//text()') is null then
return 'SUCCESS';
end if;
RETURN l_xmltype_out.extract('//text()').getStringVal();
--<Body><List><XT_SFC_ORDER_HEADER_NC><ID>11111</ID></XT_SFC_ORDER_HEADER_NC></List></Body>
END;
执行成功了,在调用这个函数时,直接报错,报错信息为:
ORA-29540: 类 oracle/jpub/runtime/dbws/DbwsProxy 不存在
求大神支招,需要怎么解决?在网上搜索了一些解决办法,还是没有解决···
解决方案 »
- PL/SQL登录问题?
- 公司一道数据库笔试题?
- 在日文系统下的ORACLE10如何显示中文
- 不知如何是好,请各位帮忙看看!
- 请教ORA:08103错误de解决方法!
- 在 本地计算机 无法启动 OracleOraHome90ManagementServer 服务
- 求助!这语句那里错了 ORACLE 语法不熟啊 T_T
- 大家有读过ITPUB刚出的《Oracle数据库性能优化》?
- 谁能帮我解决我的Oracle疑惑!
- 哪里有develope2000?
- windows server 2008 R2系统下Oracle VM VirtualBox不能为虚拟电脑打开一个新任务?
- oracle新手一枚,往各位大佬帮助一下,解决如下几个最近遇到的问题
select object_name,object_type,status from user_objects where object_type LIKE 'JAVA%';
看看是不是缺少相关组件