Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Вниз

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 сам к себе - мгновенно работает




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.021 c
7-91082           Fellomena             2001-12-20 12:37  2002.03.28  
GetWindow Vs CreateToolhelp32Snapshot - search, detect and destroy...


1-90959           Tolstomordik          2002-03-14 14:43  2002.03.28  
Преобразование строки типа PChar в строку типа String


1-91006           Mina                  2002-03-15 11:08  2002.03.28  
Помогите пжл....


3-90783           Malder                2002-03-02 12:29  2002.03.28  
Как создать триггер ?


3-90764           chik_                 2002-03-01 10:29  2002.03.28  
SQL+BDE+DELPHI