SQL Server預存程序調用WebService

來源:互聯網
上載者:User

一、發布WebService,服務的內容是通過手機號碼查詢使用者姓名

二、編寫預存程序

create procedure [dbo].[proc_CallWebService]@parameter varchar(20)asbegin    declare @obj int    declare @url varchar(200)    declare @response varchar(5000)    set  @url='http://localhost/zyr/WebServiceDemo.asmx/GetUserNameByMobile?mobile='+@parameter+''    exec sp_OACreate 'MSXML2.ServerXMLHttp',@obj out    exec sp_OAMethod @obj,'Open',null,'GET',@url,false    exec sp_OAMethod @obj,'send'    exec sp_OAGetProperty @obj,'responseText',@response out        select @response [response]    exec sp_OADestroy @objend

說明:

sp_OACreate 建立 OLE 對象執行個體。

  • 第一個參數為 OLE 對象的程式標識符(ProgID)或類別識別項(CLSID)。
  • 第二個參數為返回的對象令牌,必須是資料類型為 int 的局部變數,在後面的方法中都要用到對象令牌。輸出參數,必須加 OUT 或 OUTPUT。

sp_OAMethod 調用 OLE 對象的方法。

  • 第一個參數為對象令牌。
  • 第二個參數為方法名稱。
  • 第三個參數為方法的傳回值,如果方法返回的是對象,則該參數類型為 int。輸出參數,必須加 OUT 或 OUTPUT。
  • 第四個及以後的參數為方法的參數值,如果方法的參數是輸出參數,則要加上 OUT 或 OUTPUT。
  • sp_OAMethod 也可用來擷取屬性值。

sp_OAGetErrorInfo 擷取 OLE 自動化錯誤資訊。

  • 第一個參數為對象令牌。
  • 第二個參數為錯誤資訊的來源。輸出參數,必須加 OUT 或 OUTPUT。
  • 第三個參數為錯誤的描述。輸出參數,必須加 OUT 或 OUTPUT。

sp_OADestroy 釋放已建立的 OLE 對象。

  • 第一個參數為對象令牌。

另外,sp_OAGetProperty 擷取 OLE 對象的屬性值,sp_OASetProperty 將 OLE 對象的屬性設定為新值,sp_OAStop 停止伺服器範圍內的 OLE 自動化預存程序執行環境。這些都比較簡單。

三、執行預存程序

exec [dbo].[proc_CallWebService] '1526022****'

結果如下:

<?xml version="1.0" encoding="utf-8"?>  <string xmlns="http://app.cloud-erp.cn/">巫燕華</string>

四、可能出現的錯誤

1、問題一

解決方案:

可以使用 sp_configure 系統預存程序來查看和更改 Ole Automation Procedures 選項的當前值。

查看 OLE Automation Procedures 的當前設定。

EXEC sp_configure 'Ole Automation Procedures';GO

啟用 OLE Automation Procedures。

sp_configure 'show advanced options', 1;GORECONFIGURE;GOsp_configure 'Ole Automation Procedures', 1;GORECONFIGURE;GO

2、問題二

 解決方案:

在webservice的 <system.web> 節點下加入 

<webServices>    <protocols>        <add name= "HttpPost" />        <add name= "HttpGet" />    </protocols></webServices>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.