環境說明:資料庫的版本為11.2.0.3(現在10G的版本用的人不多了)
作業系統:windows2003、windows2008和linux64_6.3配置的步驟都是一樣的
配置步驟:
一、下載下傳安裝包
First, download the latest copy of the dbwsclient.jar file:
二、把下載下傳的包放入到目錄/u01/app/oracle/product/OraDb11g_home1/sqlj/lib
三、進行包的導入(步驟寫着可以用sys使用者導入,但是測試的時候sys使用者報錯很多,用了system使用者後解決)
注:windows需要先安裝java,并在oracle使用者下運作
10g R2的導入腳本
CREATE OR REPLACE Function Add_Numbers(p_Int_1 In Number, p_Int_2 In Number) 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_Service_Qname := Utl_Dbws.To_Qname(l_Namespace, 'Calculator');
l_Port_Qname := Utl_Dbws.To_Qname(l_Namespace, 'CalculatorPort');
l_Operation_Qname := Utl_Dbws.To_Qname(l_Namespace, 'ws_add');
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 => null -- l_Port_Qname
,Operation_Name => l_Operation_Qname);
l_Xmltype_In := Sys.Xmltype('<?xml version="1.0" encoding="utf-8"?>
' || p_Int_1 || '
' || p_Int_2 || '
');
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;
/
總結:年末這個時間點,要靜下心來研究一個技術真不是一件容易的事情。本來不是很難的一個問題,弄的焦頭爛額。做技術請先把心靜下來;
........................................................................................................................................................................
本文作者:JOHN,某上市公司DBA,業餘時間專注于資料庫的技術管理,從管理的角度去運用技術。
ORACLE技術部落格:ORACLE 獵人筆記 資料庫技術群:367875324 (請備注ORACLE管理 )