Текущий архив: 2002.03.28;
Скачать: CL | DM;
Вниз2000 собрать строку из записей в таблице Найти похожие ветки
← →
KAA (2002-03-01 13:12) [0]Есть таблица, в ней одно из полей - строка. Задача, вернуть переменную, в которой будут перечислены значения этого поля из всех записей. Сделать это желательно запросом, пробежать все записи в цикле - не вариант.
← →
TSV (2002-03-01 13:41) [1]А как ты себе это иначе представляешь?
Напиши хранимую процедуру и вызывай ее с клиента.
← →
Delirium (2002-03-01 13:45) [2]Всё что я могу себе представить, это что-то связаное с
select col1 from Table1 for xml auto
← →
KAA (2002-03-01 14:16) [3]for xml auto
что это?
пробегать в цикле - это слишком зверская операция.
Неужели в MSSQL нет способа сделать нечто подобное средствами SQL.
← →
Reindeer Moss Eater (2002-03-01 14:33) [4]В T-SQL очень даже просто
Declare MyCur CURSOR For Select MyField From MyTable
Open MyCur
While @@FetchStatus = 0
и так далее ...
← →
TSV (2002-03-01 14:48) [5]Это то, что я имел в виду. :-)
← →
Delirium (2002-03-01 15:10) [6]А While - это по вашему не цикл ?!!!
← →
Delirium (2002-03-01 15:11) [7]
> KAA © (01.03.02 14:16)
> for xml auto
> что это?
Попробуй - узнаешь!
← →
KAA (2002-03-01 15:33) [8]>Delirium © (01.03.02 15:11)
Это то что надо. А есть более приличный вид, чтоб были только значения полей?
← →
Delirium (2002-03-01 15:48) [9]Нет, это формат XML - собственно, универсальная древовидная структура состоящая из тегов. Её, при желании, можно обработать соответствующим образом как обычный текст.
← →
Reindeer Moss Eater (2002-03-01 15:53) [10]Алергия на циклы?
Тогда объедини таблицу с ней самой столько раз, сколько в ней строк. Получишь в результирующем запросе одну строку со всеми значениями поля.
← →
KAA (2002-03-01 15:59) [11]А чтоб результать выборки присвоить переменной?
Говорит The FOR XML clause is not allowed in a ASSIGNMENT statement.
← →
Delirium (2002-03-01 16:04) [12]
> Reindeer Moss Eater (01.03.02 15:53)
> Алергия на циклы?
> Тогда объедини таблицу с ней самой столько раз, сколько
> в ней строк. Получишь в результирующем запросе одну строку
> со всеми значениями поля.
Вопрос не праздный и не из-за аллегии на циклы, я бьюсь над похожей проблемой уже довольно давно. Вот тебе задача: есть таблица с BLOB полями, в ячейки BLOB полей необходимо помещать структуру и данные различных таблиц (в общем случае совершенно различных) для последующей репликации основной таблицы. Пока что оперирую XML средствами MSSQL-я, ничего лучше не придумал. А циклы и курсоры - весьма и весьма медленно, особенно, если моя задача работает большей частью в триггерах.
← →
Delirium (2002-03-01 16:08) [13]
> KAA © (01.03.02 15:59)
> А чтоб результать выборки присвоить переменной?
> Говорит The FOR XML clause is not allowed in a ASSIGNMENT
> statement.
Вот тебе подход, как я делаю:
select * into #Temp
from OpenQuery(local,"select * from test for xml auto, xmldata")
здесь local - linked server сам к себе.
Пока ничего лучше придумать не смог :(
← →
KAA (2002-03-01 16:34) [14]можно подробней о linked server , я с этим не работал.
эта конструкця работает
select caption from list_job for xml auto
хотелось бы сделать
select @a=caption from list_job for xml auto
← →
Delirium (2002-03-01 16:50) [15]
select @a=caption from list_job for xml auto
Так не получится. Во первых BLOB-данные не могут храниться в переменных, а во вторых - вообще сохранить XML в таблицу можно только так, как я показал выше (если кто знает другой способ - буду рад). Связаные сервера это сервера к которым можно обратиться таким образом:
select * from server.base.user.table
создаются процедурой sp_addlinkedserver или в
EnterPrise Manager->Security->Linked Servers
ну а что делть дальше - читай help :)
← →
wicked (2002-03-01 17:19) [16]2 Delirium ©
а скорость не падает при выборке через linked server?.... а то я с оракла так данные забираю, так подтормаживает....
← →
Delirium (2002-03-01 17:32) [17]У меня-же linked сам к себе - мгновенно работает
Страницы: 1 вся ветка
Текущий архив: 2002.03.28;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.007 c