Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Si l’option BINARY BASE64 est spécifiée dans la requête, les données binaires sont retournées au format d’encodage base64. Par défaut, si l’option BINARY BASE64 n’est pas spécifiée, le mode AUTO prend en charge l’encodage d’URL des données binaires. Autrement dit, au lieu de données binaires, une référence à une URL relative à la racine virtuelle de la base de données où la requête a été exécutée est retournée. Cette référence peut être utilisée pour accéder aux données binaires réelles dans les opérations suivantes à l’aide de la requête dbobject ISAPI SQLXML. La requête doit fournir suffisamment d’informations, telles que les colonnes clés primaires, pour identifier l’image.
Lors de la spécification d’une requête, si un alias est utilisé pour la colonne binaire de la vue, l’alias est retourné dans l’encodage d’URL des données binaires. Dans les opérations suivantes, l’alias est sans signification et l’encodage d’URL ne peut pas être utilisé pour récupérer l’image. Par conséquent, n’utilisez pas d’alias lors de l’interrogation d’une vue à l’aide du mode AUTO FOR XML.
Par exemple, dans une requête SELECT, la conversion de n’importe quelle colonne en objet blob (binary large object) en fait une entité temporaire dans laquelle elle perd son nom de table associé et son nom de colonne. Cela entraîne la génération d’une erreur par les requêtes en mode AUTO, car elle ne sait pas où placer cette valeur dans la hiérarchie XML. Par exemple:
CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)
INSERT INTO MyTable VALUES (1, 0x7);
Cette requête génère une erreur, en raison de la conversion en objet blob (Binary Large Object) :
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO;
La solution consiste à ajouter l’option BINARY BASE64 à la clause FOR XML. Si vous supprimez le cast, la requête produit les résultats comme prévu :
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO, BINARY BASE64;
Voici le résultat obtenu :
<MyTable Col1="1" Col2="Bw==" />