Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.009 c
1-90979
Demon ltd
2002-03-14 23:09
2002.03.28
Разница между датами


1-90875
-=Keith Flint=-
2002-03-17 14:52
2002.03.28
Люди добрые, спасите!


3-90725
Eugie
2002-02-27 13:54
2002.03.28
Присвоение значение полю типа Integer в Interbase


1-91007
Vladimir1
2002-03-09 20:27
2002.03.28
Динамические массивы в Дельфи


14-91057
Prog_SKV@Mail.ru
2002-02-13 08:16
2002.03.28
Помогите !!!