sp_OAGetProperty (Transact-SQL)
適用於:SQL Server
取得 OLE 物件的屬性值。
語法
sp_OAGetProperty objecttoken , propertyname
[ , propertyvalue OUTPUT ]
[ , index... ]
[ ; ]
引數
objecttoken
先前使用 sp_OACreate
所建立之 OLE 物件的物件標記。
propertyname
要傳回之 OLE 物件的屬性名稱。
propertyvalue OUTPUT
傳回的屬性值。 如果指定,它必須是適當數據類型的局部變數。
如果屬性傳回 OLE 物件, propertyvalue 必須是數據類型 int 的局部變數。物件令牌會儲存在局部變數中,而且此物件令牌可以與其他 OLE Automation 預存程式搭配使用。
如果 屬性傳回單一值,則為:
- 指定 propertyvalue 的局部變數,這會傳回局部變數中的屬性值;或
- 請勿指定 propertyvalue,這會以單一數據行單一數據列結果集的形式將屬性值傳回給用戶端。
當屬性傳回數位時,如果 指定 propertyvalue ,則會將其設定為 NULL
。
如果 指定 propertyvalue ,但屬性不會傳回值,就會發生錯誤。 如果屬性傳回具有兩個以上維度的陣列,就會發生錯誤。
index
索引參數。 如果指定, 索引 必須是適當數據類型的值。
某些屬性具有參數。 這些屬性稱為索引屬性,而且參數稱為索引參數。 屬性可以有多個索引參數。
注意
這個預存程式的參數是由位置指定,而不是名稱。
傳回碼值
0
(success) 或非零數位 (failure),這是 OLE Automation 物件所傳回之 HRESULT 的整數值。
如需 HRESULT 傳回碼的詳細資訊,請參閱 OLE 自動化傳回碼和錯誤資訊。
結果集
如果屬性傳回具有一或兩個維度的陣列,則會以結果集的形式傳回數位給用戶端:
一維陣列會以單一資料列結果集的方式傳回給用戶端,這個資料列中有多個資料行,資料行數目等於陣列的元素數目。 換句話說,陣列會以數據行的形式傳回。
二維陣列會以多資料列結果集的方式傳回給用戶端,這個資料列中有多個資料行,資料行數目等於陣列的元素數目。資料行數目等於陣列第一維的元素數目,資料列數目等於陣列第二維的元素數目。 換句話說,陣列會傳回為 (資料行、數據列)。
當屬性傳回值或方法傳回值為陣列時,sp_OAGetProperty
或 sp_OAMethod
會將結果集傳給用戶端。 (方法輸出參數不能是陣列。這些程式會掃描數位中的所有資料值,以判斷用於結果集中每個數據行的適當 SQL Server 數據類型和數據長度。 對於特定資料行,這些程序會利用資料類型和長度來表示這個資料行中的所有資料值。
當資料行中的所有資料值都共用相同的資料類型時,整個資料行都會使用這個資料類型。 當數據行中的數據值屬於不同的數據類型時,會根據下列圖表選擇整個數據行的數據類型。
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
來取得屬性值。
權限
需要系統管理員固定伺服器角色的成員資格,或直接在此預存程式上執行許可權。 必須啟用 [Ole Automation Procedures] 伺服器組態選項,才能使用任何與 OLE Automation 相關的系統程式。
範例
A. 使用局部變數
下列範例會取得 HostName
屬性(先前建立 SQLServer
的物件),並將其儲存在局部變數中。
DECLARE @property VARCHAR(255);
EXEC @hr = sp_OAGetProperty @object,
'HostName',
@property OUTPUT;
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
PRINT @property;
B. 使用結果集
下列範例會取得 HostName
屬性(先前建立 SQLServer
的物件),並將它傳回至用戶端做為結果集。
EXEC @hr = sp_OAGetProperty @object,
'HostName';
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END;