適用於: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 AS VARCHAR (255);
EXECUTE
@hr = sp_OAGetProperty
@object,
'HostName',
@property OUTPUT;
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo @object;
RETURN;
END
PRINT @property;
B. 使用結果集
下列範例會取得 HostName 屬性(先前建立 SQLServer 的物件),並將它傳回至用戶端做為結果集。
EXECUTE
@hr = sp_OAGetProperty
@object,
'HostName';
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo @object;
RETURN;
END