powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Туплю с For Xml Explicit Нужен простой пример
16 сообщений из 16, страница 1 из 1
Туплю с For Xml Explicit Нужен простой пример
    #32057575
Chel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хочу получить
Код: plaintext
<root><bbb>aaa<bbb><root>

Пишу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select	 1  as Tag,
	NULL as Parent,
	NULL as [root! 1 !]

UNION ALL

select 	 2  as Tag,
	 1 ,
	'aaa' as [bbb! 2 ]
for xml explicit

Хелп!
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32057577
Chel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выдает ошибку
Undeclared tag ID 2 is used in a FOR XML EXPLICIT query.
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32057589
Terol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select
1 as Tag
, null as Parent
, null as [root!1!fake_id]
, null as [my_tag!2!fake_id]
, null as [my_tag!2!name]
union all
select 2, 1, null, 1, null
union all
select 2, 1, null, 1,'Terol'
for xml explicit
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32057591
Chel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну раз никто не отвечает, отвечу себе сам :)
вот модифицированный пример от Glory , если кому кроме меня интересно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select	 1  as Tag,
	NULL as Parent,
	NULL as [root! 1 ],
	NULL as [bbb! 2 ]

UNION all

SELECT	 2 ,
	 1 ,
	NULL,
	'aaa' as [bbb! 2 ]
for xml explicit
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32057596
Chel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Terol:
Сенкс, теперь попробую переварить...
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32058213
STS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STS
Гость
2Chel:
А как тогда в эту конструкцию вставить реальные данные
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32058253
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2STS
Что значит реальные данные ?
Это, например , реальные данные ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select	 1  as Tag,
	NULL as Parent,
	NULL as [root! 1 ],
	NULL as [bbb! 2 ]

UNION all

SELECT	 2 ,
	 1 ,
	NULL,
	name as [bbb! 2 ]
from sysobjects
for xml explicit
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32058315
STS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STS
Гость
2Glory:
Да, это вроде работает.
Но, дальше мне нужно моложить это в XML файл. Я использую:
Код: plaintext
'osql -h-1 -n -E -Q "EXEC get_xml" -u -o mysql.xml', no_output

и в результате получаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 <root><Day LastID= "21003 " Data1= "-23 " Data2= "31 " Data3= "43 "/><Day LastID= "2100 
	 4 " Data1= "-1 " Data2= "0 " Data3= "-1 "/><Day LastID= "21005 " Data1= "-2 " Data
	 2 = "0 " Data3= "0 "/><Day LastID= "21006 " Data1= "-2 " Data2= "-2 " Data3= "-1 "/>
	<Day LastID= "21007 " Data1= "0 " Data2= "0 " Data3= "0 "/><Day LastID= "21008 " 
	Data1= "-1 " Data2= "0 " Data3= "-1 "/><Day LastID= "21009 " Data1= "-1 " Data2= "
	-1 " Data3= "0 "/><Day LastID= "21010 " Data1= "-136 " Data2= "-94 " Data3= "-87 "
	/><Day LastID= "21011 " Data1= "-6 " Data2= "-9 " Data3= "-6 "/><Day LastID= "21 
	 012 " Data1= "1 " Data2= "-1 " Data3= "0 "/><Day LastID= "21013 " Data1= "0 " Data
	 2 = "-1 " Data3= "-1 "/><Day LastID= "21014 " Data1= "0 " Data2= "-1 " Data3= "-1 "/
	></root>

Структура, содержание верное, но файл не работает в IE!!!!!! . Он обрезан по ширине и после перехода строки имеет табуляцию.
В идеале мне нужно:
Код: plaintext
1.
2.
3.
4.
5.
<root>
<Day LastID= "21003 " Data1= "-23 " Data2= "31 " Data3= "43 "/>
<Day LastID= "2100 	 4 " Data1= "-1 " Data2= "0 " Data3= "-1 "/>
<Day LastID= "21005 " Data1= "-2 " Data2= "0 " Data3= "0 "/>
<Day LastID= "21006 " Data1= "-2 " Data2= "-2 " Data3= "-1 "/>
</root>

Подскажите, пожалуйста, как настроить ogsl или IE, чтобы создаваемый XML работал в IE без дополнительного приведения к рабочему виду.
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32058328
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-w 65536

Если длина вашего xml-я превысит 65536, то придется использовать запрос вида

Код: plaintext
1.
2.
declare @t table(fake_id varchar( 10 ) )
select fake_id, name from @t  root 
full outer join (select top  10  name from sysobjects) AS sysobjects ON sysobjects.name = root.fake_id for xml auto, elements


который выводит значения атрибутов в отдельных тэгах, но зато "переваривает" табуляторы и новые строки
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32058398
STS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STS
Гость
2Glory
С файлами до 65536 все работае прекрасно, но к сожалению, мои XML'ы получаются больше 65536.

Конструкция со врем. таблицей работает, значения атрибутов выводятся в отдельных тэгах, но файл получается опять "неживой", т.к. osgl режет файл по тэгу, в зависимости от заданной длины, получается следующее:
Код: plaintext
1.
<root><diff1><LastID> 210151759 </LastID><Data1> 0 </Data1><Data2> 0 </Data2></diff1
	><diff1><LastID> 210151659 </LastID><Data1> 0 </Data1><Data2> 0 </Data2></dif

из-за этого и не работает.
Есть ли вообще какой-нть выход из этой ситуации.
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32058419
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну значит вам не повезло. Придется решать задачу через клиентское приложение. Не думаю, что его написание возьмет много времени.

PS
А что все-таки мешает выводить данные непосредственно в браузер ? Пусть пользователь сам в браузере выбирает Save as.
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32058455
STS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STS
Гость
Конечно можно получать данные по запросу непосредственно из базы, но дело в том, что мне необходимо хранить уже готовые отчеты.
А клиенту я хочу их выводить в "красивом" виде через IE, XML используя в качестве источника данных.
Я уже пытался решить эту задачу различными путями, пока остановился на XML.

А что вы имели в виду под клиентским приложением, может что посоветуете.

Кстати, у вас есть опыт написания Extended SP в VC++ .Net, может там можно просто составить файл с нужной разметкой и записать как XML, я сам в С++ не очень силен, так что буду признателен за любую помощь
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32058497
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие Extended SP ?!! Какой VC++ .Net ?!! Что-вы !!\r
\r
Вот qu-qu предлагает. Очень хороший вариант и главное простой
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32059022
STS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STS
Гость
2Glory
Я все же раскопал эту проблему. Решение очень тривиально - писать с помощью BCP, а OSQL - это очень плохая утилита, толком настроить output_file просто нельзя, но почему-то вы всем советуете именно ее.
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32059043
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда код с пояснениями/комментариями в FAQ и сюда
...
Рейтинг: 0 / 0
Туплю с For Xml Explicit Нужен простой пример
    #32059126
STS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STS
Гость
2All:
Чтобы создать рабочий XML надо:
1. Сформировать запрос (For Xml Explicit)
2. Записать файл

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE @result int
DECLARE @file varchar( 150 )
DECLARE @cmd varchar(  150 )

Set @file = 'mysql.xml'

set @cmd = 'BCP "EXEC get_xml" queryout "' + @file + '" -C ACP -c -r -T'

EXEC @result = master..xp_cmdshell @cmd


Файл можно делать любого размера и любой длины, работает в IE без проблем.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Туплю с For Xml Explicit Нужен простой пример
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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