調(diào)用 OLE 對象的方法。
sp_OAMethod objecttoken,
methodname
[, returnvalue OUTPUT]
[ , [ @parametername = ] parameter [ OUTPUT ]
[...n]]
objecttoken
是先前用 sp_OACreate 創(chuàng)建的 OLE 對象令牌。
methodname
是要調(diào)用的 OLE 對象的方法名。
returnvalue OUTPUT
是該 OLE 對象的方法的返回值。如果指定,那么它必須是適當(dāng)數(shù)據(jù)類型的局部變量。
如果方法返回單個值,那么或者為 returnvalue 指定一個局部變量,以便在該局部變量中返回方法的返回值,或者不指定 returnvalue,以單列、單行結(jié)果集的形式將方法返回值返回給客戶端。
如果方法返回值是 OLE 對象,那么 returnvalue 必須是數(shù)據(jù)類型為 int 的局部變量。對象令牌將保存在該局部變量中,并且可由其它 OLE 自動化存儲過程使用。
當(dāng)方法返回值是數(shù)組時,如果指定了 returnvalue,那么該值將被設(shè)置為 NULL。
在下列情況下會出現(xiàn)錯誤:
[@parametername =] parameter [OUTPUT]
是方法參數(shù)。如果指定,那么 parameter 必須是適當(dāng)數(shù)據(jù)類型的值。
若要獲取輸出參數(shù)的返回值,parameter 必須是適當(dāng)數(shù)據(jù)類型的局部變量,并且必須指定 OUTPUT。如果指定的是常量參數(shù),或未指定 OUTPUT,那么輸出參數(shù)的任何返回值均被忽略。
如果指定,則 parametername 必須是 Microsoft® Visual Basic® 命名參數(shù)的名稱。要注意 @parametername 不并是 Transact-SQL 局部變量。將去掉符號 (@),并將 parametername 作為參數(shù)名傳遞給 OLE 對象。指定所有位置參數(shù)后才能指定命名參數(shù)。
n
是表示可以指定多個參數(shù)的占位符。
說明 @parametername 可以是命名參數(shù),因為它是指定方法的一部分,并將直接傳遞給對象。此存儲過程的其它參數(shù)是按位置指定的,而不是按名稱。
0(成功)或非零數(shù)字(失?。?,是由 OLE 自動化對象返回的 HRESULT 的整數(shù)值。
有關(guān) HRESULT 返回代碼的更多信息,請參見 OLE 自動化返回代碼和錯誤信息。
如果方法返回值是一維或二維數(shù)組,那么該數(shù)組將作為結(jié)果集返回給客戶端:
當(dāng)屬性返回值或方法返回值是數(shù)組時,sp_OAGetProperty 或 sp_OAMethod 將向客戶端返回結(jié)果集。(方法輸出參數(shù)不能是數(shù)組。)這些過程掃描數(shù)組中的所有數(shù)據(jù)值,以便為該結(jié)果集的每一列確定正確的 Microsoft SQL Server™ 數(shù)據(jù)類型和數(shù)據(jù)長度。對于某個特定的列,這些過程將使用表示該列中的所有數(shù)據(jù)值所需要的數(shù)據(jù)類型和長度。
當(dāng)一列中的所有數(shù)據(jù)值都具有相同的數(shù)據(jù)類型時,此數(shù)據(jù)類型將用于整個列。當(dāng)一列中的數(shù)據(jù)值使用不同的數(shù)據(jù)類型時,將按下面的圖表選擇整個列的數(shù)據(jù)類型。
int | float | Money | datetime | varchar | nvarchar | |
---|---|---|---|---|---|---|
int | int | float | Money | varchar | varchar | nvarchar |
float | float | float | Money | varchar | varchar | nvarchar |
money | money | money | Money | varchar | varchar | nvarchar |
datetime | varchar | varchar | Varchar | datetime | varchar | nvarchar |
varchar | varchar | varchar | Varchar | varchar | varchar | nvarchar |
nvarchar | nvarchar | nvarchar | Nvarchar | nvarchar | nvarchar | nvarchar |
也可用 sp_OAMethod 來獲取屬性值。
只有 sysadmin 固定服務(wù)器角色的成員才能執(zhí)行 sp_OAMethod。
下面的示例調(diào)用先前創(chuàng)建的 SQLServer 對象的 Connect 方法。
EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server',
'my_login', 'my_password'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
下面的示例獲取 HostName 屬性(屬于先前創(chuàng)建的 SQLServer 對象)并將其存儲在局部變量中。
DECLARE @property varchar(255)
EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
PRINT @property
相關(guān)文章