共用方式為


使用 BINARY BASE64 選項

若查詢中指定 BINARY BASE64 選項,就會以 Base64 編碼格式傳回二進位資料。 根據預設,如果未指定 BINARY BASE64 選項,AUTO 模式支援二進位數據的 URL 編碼。 也就是說,返回的不是二進位資料,而是指向執行查詢的資料庫虛擬根目錄的相對 URL 的參考。 這個參考可用來存取後續作業中實際的二進位數據,方法是使用 SQLXML ISAPI dbobject 查詢。 查詢必須提供足夠的資訊,例如主鍵數據行,才能識別影像。

在指定查詢時,如果檢視的二進位數據行使用別名,則會在二進位數據的 URL 編碼中傳回別名。 在後續作業中,別名毫無意義,且URL編碼無法用來擷取影像。 因此,使用 FOR XML AUTO 模式查詢檢視時,請勿使用別名。

例如,在 SELECT 查詢中,將任何數據行轉換成二進位大型物件 (BLOB) 會使它成為暫時實體,因為它會遺失其相關聯的數據表名稱和數據行名稱。 這會導致 AUTO 模式查詢產生錯誤,因為它不知道在 XML 階層中放置此值的位置。 例如:

CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)  
INSERT INTO MyTable VALUES (1, 0x7);  

此查詢會產生錯誤,因為轉換成二進位大型物件 (BLOB):

SELECT Col1,  
CAST(Col2 as image) as Col2  
FROM MyTable  
FOR XML AUTO;  

解決方法是將 BINARY BASE64 選項加入 FOR XML 子句中。 如果您移除轉換,查詢會產生如預期的結果:

SELECT Col1,  
CAST(Col2 as image) as Col2  
FROM MyTable  
FOR XML AUTO, BINARY BASE64;  

以下是結果:

<MyTable Col1="1" Col2="Bw==" />  

另請參閱

搭配 FOR XML 使用 AUTO 模式