Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FOR XML EXPLICIT ? / 4 сообщений из 4, страница 1 из 1
25.06.2002, 18:18:24
    #32033861
Alexis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML EXPLICIT ?
если 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
26.06.2002, 08:33:05
    #32033913
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML EXPLICIT ?
Слово "интеллигентно" вообще в моем понимании плохо увязывается с 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
26.06.2002, 13:14:09
    #32033966
Terol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML EXPLICIT ?
аннотированные схемы порядочно тормозят.. :-(
...
Рейтинг: 0 / 0
26.06.2002, 13:44:19
    #32033975
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML EXPLICIT ?
Если порядочно - означает "на порядок", не согласен. По моим оценкам потери производительности дают 2.5 - 4 раза. Это при отключенном кэшировании схем. Ну а что ж вы хотите? По сути между клиентом и SQL Srv всунули дополнительный механизм, чтобы замэппить XML на реляционку. От этого никуда не деться: хотите удобства - платите скоростью. Если в Юконе сделают native XML storage, будет, конечно, приличней.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FOR XML EXPLICIT ? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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