点击(此处)折叠或打开
今天朋友电话问如何利用Oracle直接调用WebService , 就帮他利用utl_dbws包实现了下,后来发现通过utl_http也可以实现,
并不需要另外安装东西。这次主要说说utl_dbws.
utl_dbws包下载地址(包含10G,11G): https://oracle-base.com/articles/10g/utl_dbws-10g
由于朋友系统是windows 的,就以window为例。
一、utl_dbws包安装:
1、下载解压缩后 目录里有samples,sqlj 两个文件夹,并复制到 ORACLE_HOME目录下。
2、WINDOW 在 ORACLE_HOME/sqlj/lib 目录 执行下列命令
//10G 数据库执行
loadjava -u sys/123456 -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb102.ja
//11G 数据库执行
loadjava -u sys/123456 -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb11.jar
3、跑相关脚本与授予权限
10G数据库不需要跑脚本
11G 数据库要跑的脚本并授予权限
sql>@?/sqlj/lib/utl_dbws_decl.sql
sql>@?/sqlj/lib/utl_dbws_body.sql
sql>CREATE PUBLIC SYNONYM utl_dbws FOR sys.utl_dbws;
sql>GRANT EXECUTE ON sys.utl_dbws TO test; ---给需求用户授予权限
至此安装已经完成了。在库中检查下是否有 utl_dbws包了。
二、调用WebService
1、创建Function
点击(此处)折叠或打开
- CREATE OR REPLACE FUNCTION add_wms_hp(str_hpname IN varchar) RETURN number as
- l_service UTL_DBWS.service;
- l_call UTL_DBWS.call;
- l_wsdl_url VARCHAR2(32767);
- l_namespace VARCHAR2(32767);
- l_service_qname UTL_DBWS.qname;
- l_port_qname UTL_DBWS.qname;
- l_operation_qname UTL_DBWS.qname;
- l_xmltype_in SYS.XMLTYPE;
- l_xmltype_out SYS.XMLTYPE;
- l_return NUMBER;
- BEGIN
- l_wsdl_url := 'http://192.168.5.112/webservice/SapService.asmx?wsdl'; --配置
- l_namespace := 'http://tempuri.org/'; --配置
- l_service_qname := UTL_DBWS.to_qname(l_namespace, 'SapService'); --配置
- l_port_qname := UTL_DBWS.to_qname(l_namespace, 'SapServiceSoap12');
- l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'GET9001_114'); --GET9001_114
- l_service := UTL_DBWS.create_service(wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
- 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);
- l_xmltype_in := SYS.XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
- <GET9001_114 xmlns="http://tempuri.org/">
- <t9001_114s>
- <T_9001_114>
- <DESCRIPTION>string</DESCRIPTION>
- <SOURCE_SYS>string</SOURCE_SYS>
- <SENDDATE>string</SENDDATE>
- <ETR_DATE>string</ETR_DATE>
- <MESG_ID>string</MESG_ID>
- <MESG_GUID>string</MESG_GUID>
- <ZSPARE01>string</ZSPARE01>
- <ZSPARE02>string</ZSPARE02>
- <ZSPARE03>string</ZSPARE03>
- <ZSPARE04>string</ZSPARE04>
- <ZSPARE05>string</ZSPARE05>
- <ITEMNA>string</ITEMNA>
- <BRANID>string</BRANID>
- <MATNR>string</MATNR>
- <MAKTXCN>string</MAKTXCN>
- <COLORCODE>string</COLORCODE>
- <ATTRIBUTE1>string</ATTRIBUTE1>
- <ATTRIBUTE2>string</ATTRIBUTE2>
- <ATTRIBUTE3>string</ATTRIBUTE3>
- <ATTRIBUTE4>string</ATTRIBUTE4>
- <ATTRIBUTE5>string</ATTRIBUTE5>
- <ATTRIBUTE6>string</ATTRIBUTE6>
- <ATTRIBUTE7>string</ATTRIBUTE7>
- <ATTRIBUTE8>string</ATTRIBUTE8>
- <ATTRIBUTE9>string</ATTRIBUTE9>
- <ATTRIBUTE10>string</ATTRIBUTE10>
- <ATTRIBUTE11>string</ATTRIBUTE11>
- <ATTRIBUTE12>string</ATTRIBUTE12>
- <ATTRIBUTE13>string</ATTRIBUTE13>
- <ATTRIBUTE14>string</ATTRIBUTE14>
- <ATTRIBUTE15>string</ATTRIBUTE15>
- <ATTRIBUTE16>string</ATTRIBUTE16>
- <ATTRIBUTE17>string</ATTRIBUTE17>
- <ATTRIBUTE18>string</ATTRIBUTE18>
- <ATTRIBUTE19>string</ATTRIBUTE19>
- <ATTRIBUTE20>string</ATTRIBUTE20>
- </T_9001_114>
- <T_9001_114>
- <DESCRIPTION>string</DESCRIPTION>
- <SOURCE_SYS>string</SOURCE_SYS>
- <SENDDATE>string</SENDDATE>
- <ETR_DATE>string</ETR_DATE>
- <MESG_ID>string</MESG_ID>
- <MESG_GUID>string</MESG_GUID>
- <ZSPARE01>string</ZSPARE01>
- <ZSPARE02>string</ZSPARE02>
- <ZSPARE03>string</ZSPARE03>
- <ZSPARE04>string</ZSPARE04>
- <ZSPARE05>string</ZSPARE05>
- <ITEMNA>string</ITEMNA>
- <BRANID>string</BRANID>
- <MATNR>string</MATNR>
- <MAKTXCN>string</MAKTXCN>
- <COLORCODE>string</COLORCODE>
- <ATTRIBUTE1>string</ATTRIBUTE1>
- <ATTRIBUTE2>string</ATTRIBUTE2>
- <ATTRIBUTE3>string</ATTRIBUTE3>
- <ATTRIBUTE4>string</ATTRIBUTE4>
- <ATTRIBUTE5>string</ATTRIBUTE5>
- <ATTRIBUTE6>string</ATTRIBUTE6>
- <ATTRIBUTE7>string</ATTRIBUTE7>
- <ATTRIBUTE8>string</ATTRIBUTE8>
- <ATTRIBUTE9>string</ATTRIBUTE9>
- <ATTRIBUTE10>string</ATTRIBUTE10>
- <ATTRIBUTE11>string</ATTRIBUTE11>
- <ATTRIBUTE12>string</ATTRIBUTE12>
- <ATTRIBUTE13>string</ATTRIBUTE13>
- <ATTRIBUTE14>string</ATTRIBUTE14>
- <ATTRIBUTE15>string</ATTRIBUTE15>
- <ATTRIBUTE16>string</ATTRIBUTE16>
- <ATTRIBUTE17>string</ATTRIBUTE17>
- <ATTRIBUTE18>string</ATTRIBUTE18>
- <ATTRIBUTE19>string</ATTRIBUTE19>
- <ATTRIBUTE20>string</ATTRIBUTE20>
- </T_9001_114>
- </t9001_114s>
- </GET9001_114>');
-
- 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);
- l_return := l_xmltype_out.extract('//return/text()').getNumberVal();
- RETURN l_return;
- END;
- /
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31073708/viewspace-2071962/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31073708/viewspace-2071962/