powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FOR XML EXPLICIT ?
4 сообщений из 4, страница 1 из 1
FOR XML EXPLICIT ?
    #32033861
Alexis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если oдин из селектoв не вoзврaщaет ничегo тo весь зaпрoс пaдaет тaк кaк рaзрушaется структурa . Нaпример: если 2-oй тaг не вoзврaщaется тo пoлучaется чтo пoсле 1-oгo идет 3-ий. Вoпрoс кaк мoжнo интеллигентнo решить эту прoблему?
...
Рейтинг: 0 / 0
FOR XML EXPLICIT ?
    #32033913
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слово "интеллигентно" вообще в моем понимании плохо увязывается с FOR XML EXPLICIT. Это механизм, в первую очередь предназначенный для внутренних нужд SQL Server'а (в него преобразовываются XPath-запросы). Поэтому для человеческой работы лучше использовать именно XPath (к аннотированным схемам). Ну а если заниматься мазохизмом, то, например, так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
if not exists(SELECT  1   as Tag, NULL as Parent,
         Customers.CustomerID as [Customer! 1 !CustomerID],
         NULL as [Order! 2 !OrderID]
FROM Customers where  1  =  0 )
SELECT  1                     as Tag, 
         NULL                 as Parent,
         NULL                 as [Customer! 1 !CustomerID],
         NULL                 as [Order! 2 !OrderID]
UNION ALL
SELECT  2 , 
          1 ,
         Customers.CustomerID,
         Orders.OrderID
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
ORDER BY [Customer! 1 !CustomerID], [Order! 2 !OrderID]
FOR XML EXPLICIT
else
SELECT  1                     as Tag, 
         NULL                 as Parent,
         Customers.CustomerID as [Customer! 1 !CustomerID],
         NULL                 as [Order! 2 !OrderID]
FROM Customers where  1  =  0 
UNION ALL
SELECT  2 , 
          1 ,
         Customers.CustomerID,
         Orders.OrderID
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
ORDER BY [Customer! 1 !CustomerID], [Order! 2 !OrderID]
FOR XML EXPLICIT
...
Рейтинг: 0 / 0
FOR XML EXPLICIT ?
    #32033966
Terol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аннотированные схемы порядочно тормозят.. :-(
...
Рейтинг: 0 / 0
FOR XML EXPLICIT ?
    #32033975
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если порядочно - означает "на порядок", не согласен. По моим оценкам потери производительности дают 2.5 - 4 раза. Это при отключенном кэшировании схем. Ну а что ж вы хотите? По сути между клиентом и SQL Srv всунули дополнительный механизм, чтобы замэппить XML на реляционку. От этого никуда не деться: хотите удобства - платите скоростью. Если в Юконе сделают native XML storage, будет, конечно, приличней.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FOR XML EXPLICIT ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]