Compartilhar via


Usar a opção BINARY BASE64

Se a opção BINARY BASE64 for especificada na consulta, os dados binários serão retornados no formato de codificação base64. Por padrão, se a opção BINARY BASE64 não for especificada, o modo AUTO oferecerá suporte à codificação de URL de dados binários. Ou seja, em vez de dados binários, uma referência a uma URL relativa à raiz virtual do banco de dados em que a consulta foi executada é retornada. Essa referência pode ser usada para acessar os dados binários reais em operações subsequentes usando a consulta dbobject ISAPI do SQLXML. A consulta deve fornecer informações suficientes, como colunas de chave primária, para identificar a imagem.

Ao especificar uma consulta, se um alias for usado para a coluna binária da exibição, o alias será retornado na codificação de URL dos dados binários. Nas operações subsequentes, o alias não tem sentido e a codificação de URL não pode ser usada para recuperar a imagem. Portanto, não use aliases ao consultar uma exibição usando o modo FOR XML AUTO.

Por exemplo, em uma consulta SELECT, a conversão de qualquer coluna em um BLOB (objeto binário grande) torna-a uma entidade temporária, pois ela perde o nome da tabela e o nome da coluna associados. Isso faz com que as consultas de modo AUTO gerem um erro, pois ele não sabe onde colocar esse valor na hierarquia XML. Por exemplo:

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

Essa consulta gera um erro devido à conversão para um objeto binário grande (BLOB).

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

A solução é adicionar a opção BINARY BASE64 à cláusula FOR XML. Se você remover a conversão, a consulta produzirá os resultados conforme o esperado:

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

Este é o resultado:

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

Consulte Também

Usar o modo AUTO com FOR XML