powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как засунуть XML в переменную?
2 сообщений из 2, страница 1 из 1
Как засунуть XML в переменную?
    #32017216
olegusan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не врублюсь как засунуть XML результат выполнения запроса в переменную?
Что-то типа
declare @qq varchar(8000)
select @qq=(SELECT * FROM article WHERE id=123 FOR XML AUTO, ELEMENTS)
...
Рейтинг: 0 / 0
Как засунуть XML в переменную?
    #32017248
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оооо! Работать с XML в MSSQL - одно удовольствие!
C XML результатом дело обстоит так:
Если Вы выполните запрос
select * into #t from MyTable
то получите #t
Но select * into #t from MyTable FOR XML AUTO
выполнить нельзя!
Я думаю, дело в том, что он выполняется не ядром (исполняющим модулем) БД, а где-то на стороне средств коннекта к БД
Т. е. select * from MyTable выполняется сервером, результат передаётся какому-нибуть OLEDB, тот вызывает XML OLE библиотеку и преобразует данные в XML.
Выход такой:
create table #tmp(txt ntext)
select @s = 'insert #tmp SELECT * FROM OPENROWSET(''MSDASQL'',''DRIVER={SQL Server};SERVER=' + @srv + ';DATABASE=<>;UID=<>;PWD=<>'', ''exec SELECT * FROM article WHERE id=123 FOR XML AUTO, ELEMENTS'')'

exec(@s)

select @qq = txt from #tmp

Но метод этот имеет недостатки:
1. SELECT * FROM article WHERE id=123 FOR XML AUTO может вернуть одну или несколько строк.
2. Результат можно получить в виде text или ntext - в зависимости от настроек провайдера для OPENROWSET, сервис паков и т.д.

Вот так всё замечательно.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как засунуть XML в переменную?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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