SQL Server的T-SQL編程語言在數據存儲和恢復方面功能強大,但在與SQL Server數據庫之外的系統交互方面則功能較弱。然而,我們可以通過SQL Server內置的COM自動操作環境來克服這個限制,SQL Server內置的COM自動操作環境可以使用戶在存儲過程中自動操作COM對象。
在SQL Server 7.0和SQL Server 6.5中提供了7個擴展的存儲過程,可以通過自己開發的或Office等現成的COM對象擴展SQL Server的功能。SQL Server還提供了一種錯誤處理機制,可以把出錯信息寫到SQL代理日志中。利用COM自動化操作服務,還可以把SQL Server與微軟的Exchange Server、Index Server和其他可以通過COM自動化操作服務控制其他軟件進行集SQL Server 6.5引進了對象自動操作環境,它最初被稱作OLE。隨著時間的變遷對象操作的名稱也有所變化,然而與SQL Server 6.5相比,SQL Server 7.0中的自動操作環境沒有改變,因此微軟的文檔中仍然把這一功能稱作OLE操作而不是COM操作,在查閱SQL Server在線手冊(BOL)時尤其需要注意這一點。下面我們來討論如何使用SQL Server的COM自動操作存儲過程以及COM自動操作如何幫助我們解決現實的編程問題。
COM操作的細節
表1列出了SQL Server中的7個用於COM操作的擴展存儲過程。當自動操作一個COM對象時,需要首先通過調用sp_OACreate建立一個COM對象的實例,然後通過一系列的sp_OAGetProperty、sp_OASetProperty和sp_OAMethod調用完成需要完成的任務,在完成對COM對象的操作後,還需要調用sp_OADestroy釋放該對象。在詳細地研究每個儲存過程時,請注意二個很重要的問題。
第一,必須提供調用的所有參數,因為自動操作功能不支持有名參數,如果不能使用一個詳細的參數,需要向它傳遞一個NULL作為占位符;第二,每個調用返回一個整數類型的HRESULT,如果調用成功則該值為0。在後面,我們將討論如何處理返回值為非。