#sql-server #xml
#sql-сервер #xml
Вопрос:
Я готовлюсь к экзамену MS 70-461, и, взглянув на предыдущий тест, я сталкиваюсь со следующим вопросом:
Вопрос: Вам нужно написать запрос Transact-SQL, который отображает все продукты, полученные одним поставщиком, в следующем формате XML:
<Suppliers SupplierID="22" Company="Company Name" ContactNumber="510 250 6400">
<Products ProductID="100" UnitPrice="249.00" UnitsInStock="7" />
<Products ProductID="118" UnitPrice="559.00" UnitsInStock="12" />
</Suppliers>
Правильный ответ
SELECT Suppliers.SupplierID,
Suppliers.CompanyName AS [Company],
Suppliers.ContactNumber,
Products.ProductID,
Products.UnitPrice,
Products.UnitsInStock
FROM Suppliers
INNER JOIN Products ON Suppliers.SupplierID = Products.SupplierID
WHERE Suppliers.SupplierID = 22
FOR XML AUTO, RAW
Я пытаюсь выполнить аналогичный запрос, используя для XML AUTO, RAW в SQL server 2012 и SQL Azure, и в обоих случаях я получаю сообщение об ошибке. Допустимо ли для XML AUTO, RAW?
Как я должен написать запрос, чтобы вернуть приведенный выше XML?
Спасибо за вашу помощь
Комментарии:
1. Я получил ту же синтаксическую ошибку, и это просто Auto. Удалите «, RAW». Я готовлюсь к тому же тесту. Удачи!
2. Здесь вы можете протестировать свой запрос: data.stackexchange.com/stackoverflow/query/edit/554038
Ответ №1:
На основе статьи MSDN RAW и AUTO являются двумя разными режимами и не могут использоваться вместе:
В предложении FOR XML вы указываете один из этих режимов:
- НЕОБРАБОТАННЫЙ
- АВТО
- ЯВНЫЙ
- ПУТЬ
Режим RAW генерирует по одному элементу на строку в наборе строк, который возвращается оператором SELECT . Вы можете создать иерархию XML, написав вложенные запросы для XML.
Автоматический режим генерирует вложенность в результирующем XML с помощью эвристики, основанной на способе указания оператора SELECT . У вас есть минимальный контроль над формой сгенерированного XML. Вложенные запросы FOR XML могут быть записаны для создания иерархии XML за пределами формы XML, которая генерируется эвристикой автоматического режима.
Поэтому вы должны использовать FOR XML AUTO
для генерации выходных данных, указанных в вопросе.
Комментарии:
1. Спасибо за ваш отзыв!