調(diào)用 OLE 對(duì)象的方法。
sp_OAMethod objecttoken,
methodname
[, returnvalue OUTPUT]
[ , [ @parametername = ] parameter [ OUTPUT ]
[...n]]
objecttoken
是先前用 sp_OACreate 創(chuàng)建的 OLE 對(duì)象令牌。
methodname
是要調(diào)用的 OLE 對(duì)象的方法名。
returnvalue OUTPUT
是該 OLE 對(duì)象的方法的返回值。如果指定,那么它必須是適當(dāng)數(shù)據(jù)類型的局部變量。
如果方法返回單個(gè)值,那么或者為 returnvalue 指定一個(gè)局部變量,以便在該局部變量中返回方法的返回值,或者不指定 returnvalue,以單列、單行結(jié)果集的形式將方法返回值返回給客戶端。
如果方法返回值是 OLE 對(duì)象,那么 returnvalue 必須是數(shù)據(jù)類型為 int 的局部變量。對(duì)象令牌將保存在該局部變量中,并且可由其它 OLE 自動(dòng)化存儲(chǔ)過(guò)程使用。
當(dāng)方法返回值是數(shù)組時(shí),如果指定了 returnvalue,那么該值將被設(shè)置為 NULL。
在下列情況下會(huì)出現(xiàn)錯(cuò)誤:
[@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 局部變量。將去掉符號(hào) (@),并將 parametername 作為參數(shù)名傳遞給 OLE 對(duì)象。指定所有位置參數(shù)后才能指定命名參數(shù)。
n
是表示可以指定多個(gè)參數(shù)的占位符。
說(shuō)明 @parametername 可以是命名參數(shù),因?yàn)樗侵付ǚ椒ǖ囊徊糠?,并將直接傳遞給對(duì)象。此存儲(chǔ)過(guò)程的其它參數(shù)是按位置指定的,而不是按名稱。
0(成功)或非零數(shù)字(失?。怯?OLE 自動(dòng)化對(duì)象返回的 HRESULT 的整數(shù)值。
有關(guān) HRESULT 返回代碼的更多信息,請(qǐng)參見(jiàn) OLE 自動(dòng)化返回代碼和錯(cuò)誤信息。
如果方法返回值是一維或二維數(shù)組,那么該數(shù)組將作為結(jié)果集返回給客戶端:
當(dāng)屬性返回值或方法返回值是數(shù)組時(shí),sp_OAGetProperty 或 sp_OAMethod 將向客戶端返回結(jié)果集。(方法輸出參數(shù)不能是數(shù)組。)這些過(guò)程掃描數(shù)組中的所有數(shù)據(jù)值,以便為該結(jié)果集的每一列確定正確的 Microsoft SQL Server™ 數(shù)據(jù)類型和數(shù)據(jù)長(zhǎng)度。對(duì)于某個(gè)特定的列,這些過(guò)程將使用表示該列中的所有數(shù)據(jù)值所需要的數(shù)據(jù)類型和長(zhǎng)度。
當(dāng)一列中的所有數(shù)據(jù)值都具有相同的數(shù)據(jù)類型時(shí),此數(shù)據(jù)類型將用于整個(gè)列。當(dāng)一列中的數(shù)據(jù)值使用不同的數(shù)據(jù)類型時(shí),將按下面的圖表選擇整個(gè)列的數(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 來(lái)獲取屬性值。
只有 sysadmin 固定服務(wù)器角色的成員才能執(zhí)行 sp_OAMethod。
下面的示例調(diào)用先前創(chuàng)建的 SQLServer 對(duì)象的 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 對(duì)象)并將其存儲(chǔ)在局部變量中。
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)文章