分享方式:


sp_OAGetProperty (Transact-SQL)

適用於:SQL Server

取得 OLE 物件的屬性值。

Transact-SQL 語法慣例

語法

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_OAGetPropertysp_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;