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 不存在
求大神支招,需要怎么解決?在網上搜索了一些解決辦法,還是沒有解決···
uj5u.com熱心網友回復:
除錯一下呢。看看哪里報錯了uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
你裝的是啥ORACLE,企業版還是標準版?select object_name,object_type,status from user_objects where object_type LIKE 'JAVA%';
看看是不是缺少相關組件
uj5u.com熱心網友回復:

我不記得安裝的是哪個版本的···應該是標準版的··這個查詢陳述句,看哪個組件缺少?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/62086.html
標籤:高級技術
