首页 » 技术 » 正文

oracle 调用 WebService 服务,简要说明

oracle 调用 WebService 服务,简要说明

环境:oracle10g, pl/sql, dbws-callout-utility-10131.zip(java扩展包)

1.去oracle官网上下载dbws-callout-utility-10131.zip

2.解压后放到oracle安装目录下的<oracle_install_dir>/sqlj/lib中;(需要注意,操作角色拥有可写权限)

3.在命令行中利用loadjava命令(一般安装完jdk或oracle之后就会有)将jar包导入oracle对应的用户中:

loadjava -u user/password@oracle -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb102.jar

若为SYS用户,命令为:

loadjava -u user/password -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb102.jar

(需要注意,操作角色拥有可写权限)

4.验证java包是否成功加载方法:

在pl/sql中敲入'sys.'若没有 'utl_dbws' 显示,表示未成功,运行之前下载的包中
'dbws-callout-utility-10131/sqlj/lib/ utl_dbws_body.sql'及'utl_dbws_decl.sql'    
如果'utl_dbws'显示,表示成功.

5.编写函数

create or replace function FUNC_GENERATE_LOGINNAME(xmlstring1 VARCHAR2)

return VARCHAR2 

AS

l_service sys.utl_dbws.SERVICE;

l_call sys.utl_dbws.call;

l_result anydata;

l_wsdl_url varchar2(1024);

l_service_name varchar2(200);

l_operation_name varchar2(200);

l_input_params SYS.UTL_DBWS.anydata_list;

begin

l_wsdl_url:='http://192.168.255.80:8081/ServicePort?wsdl';

l_service_name:='WebServiceImpl';

l_operation_name:='echo';

l_service:=sys.utl_dbws.create_service(wsdl_document_location=>URIFACTORY.getUri(l_wsdl_url),service_name=>l_service_name);

l_call:=sys.utl_dbws.create_call(service_handle=>l_service,port_name=>null,operation_name=>l_operation_name);

  --l_input_params(1):= ANYDATA.ConvertVarchar2(xmlstring1);

l_result := sys.UTL_DBWS.invoke(call_handle  => l_call,input_params => l_input_params);

sys.utl_dbws.release_call(call_Handle => l_call);

sys.utl_dbws.release_service(service_Handle => l_service);

return anydata.AccessVarchar2(l_result);

exception

  when others then

    return substr(sqlerrm,0,5000);

 END FUNC_GENERATE_LOGINNAME;

其中l_input_params(1):= ANYDATA.ConvertVarchar2(xmlstring1)表示传的第一个参数,如果有多个参数可以类似l_input_params(2):= ANYDATA.ConvertVarchar2(xmlstring2); l_input_params(3):= ANYDATA.ConvertVarchar2(xmlstring3);依此类推!也可以转成其它类型例:ANYDATA.ConvertNumber(xmlstring3)、ANYDATA.ConvertDate(xmlstring2)

6.看结果

select func_generate_loginname('xmlstring1') from dual;

xmlstring1 为入参参数,根据项目需要,建议多个varchar类型最好拼成json格式

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据