Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как засунуть XML в переменную? / 2 сообщений из 2, страница 1 из 1
19.11.2001, 03:21
    #32017216
olegusan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как засунуть XML в переменную?
Не врублюсь как засунуть XML результат выполнения запроса в переменную?
Что-то типа
declare @qq varchar(8000)
select @qq=(SELECT * FROM article WHERE id=123 FOR XML AUTO, ELEMENTS)
...
Рейтинг: 0 / 0
19.11.2001, 09:45
    #32017248
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как засунуть XML в переменную?
Оооо! Работать с 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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как засунуть XML в переменную? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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