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, '<','&lt;');
  p_xml2 := replace(p_xml, '>','&gt;');
 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 不存在
求大神支招,需要怎么解决?在网上搜索了一些解决办法,还是没有解决···