sp_OAGetProperty (Transact-SQL)
適用於:SQL Server
取得 OLE 物件的屬性值。
語法
sp_OAGetProperty objecttoken , propertyname
[ , propertyvalue OUTPUT ]
[ , index...]
引數
objecttoken
這是先前使用 sp_OACreate 建立之 OLE 對象的物件標記。
propertyname
這是要傳回之 OLE 物件的屬性名稱。
propertyvalueOUTPUT
這是傳回的屬性值。 如果指定,它必須是適當數據類型的局部變數。
如果屬性傳回 OLE 物件, propertyvalue 必須是數據類型 int 的局部變數。物件令牌會儲存在局部變數中,而且此物件令牌可以與其他 OLE Automation 預存程式搭配使用。
如果屬性傳回單一值,請為 propertyvalue 指定局部變數,以傳回局部變數中的屬性值;或不要指定 propertyvalue,以單一數據行單一數據列結果集的形式將屬性值傳回給用戶端。
當屬性傳回陣列時,如果 指定 propertyvalue ,則會設定為 NULL。
如果 指定 propertyvalue ,但屬性不會傳回值,就會發生錯誤。 如果屬性傳回具有兩個以上維度的陣列,就會發生錯誤。
index
這是索引參數。 如果指定, 索引 必須是適當數據類型的值。
某些屬性具有參數。 這些屬性稱為索引屬性,而且參數稱為索引參數。 屬性可以有多個索引參數。
注意
這個預存程式的參數是由位置指定,而不是名稱。
傳回碼值
0 (success) 或非零數位 (failure),這是 OLE Automation 物件所傳回之 HRESULT 的整數值。
如需 HRESULT 傳回碼的詳細資訊,請參閱 OLE Automation 傳回碼和錯誤資訊。
結果集
如果屬性傳回具有一或兩個維度的陣列,則會以結果集的形式傳回數位給用戶端:
一維陣列會以單一資料列結果集的方式傳回給用戶端,這個資料列中有多個資料行,資料行數目等於陣列的元素數目。 換句話說,陣列會以數據行的形式傳回。
二維陣列會以多資料列結果集的方式傳回給用戶端,這個資料列中有多個資料行,資料行數目等於陣列的元素數目。資料行數目等於陣列第一維的元素數目,資料列數目等於陣列第二維的元素數目。 換句話說,陣列會傳回為 (資料行、數據列)。
當屬性傳回值或方法傳回值是陣列時, 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 OUT;
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;
另請參閱
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: