Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Вниз2000 Работа с курсором Найти похожие ветки
← →
KAA (2002-03-28 15:43) [0]Ни по одному примеру не смог сделать работающий кусор. Можете объяснить чайника, как правильно сделать курсор и по нему перемещаться?
И как перемещаться по обычной таблице, переберая ячейки в цикле?
← →
Delirium (2002-03-28 15:49) [1]В Query Analuzer, в закладке Templates (внизу Oject Browser) есть заготовки скриптов различных объектов БД, в т.ч. и курсоров.
← →
Fay (2002-03-28 23:01) [2]DECLARE @<ИМЯ_ПЕРЕМЕННОЙ> <КАКОЙ-ТО ТИП>
DECLARE C CURSOR LOCAL FOR SELECT <ЧЁ-ТО> FROM <ГДЕ-ТО>
OPEN C
FETCH NEXT FROM C INTO @<ИМЯ_ПЕРЕМЕННОЙ>
WHILE @@FETCH_STATUS=0
BEGIN
<ЧЁ-ТО_ТУТ_ДЕЛАЕМ_ИЛИ_НЕ_ДЕЛАЕМ>
FETCH NEXT FROM C INTO @<ИМЯ_ПЕРЕМЕННОЙ>
END
CLOSE C
GO
← →
Alex-A (2002-03-29 06:51) [3]К сказанному Fay могу добавить: после close c
deallocate c
← →
KAA (2002-03-29 09:17) [4]Поглядел я эти заготовки скриптов и нашел одно отличее от предлогаемого метода, после чего все заработало.
WHILE (@@fetch_status <> -1)
← →
JibSkeart (2002-03-29 10:12) [5]to KAA
верно говорищь
← →
SergSuper (2002-03-29 11:47) [6]А вообще в MSSQL с курсорами лучше не работать, тем более чайнику
Необходимость их использования возникает очень редко, а соблазн их использовать уводит от реаляционной теории
(чё-то как-то слишком умно написал)
Пока у Вас не будет как минимум год работы с MSSQL - не используйте их вообще, даже если кажется что без них никак(на самом деле как).
← →
KAA (2002-03-29 12:13) [7]>SergSuper
А что значит год работы? Если надо и хорошо объяснят, можно и за день разобраться с этими курсорами.
Собственно задача, в цикле бегать по записям таблицы.
← →
Delirium (2002-03-29 12:43) [8]Поддеживаю SergSuper - Курсоры, необходимы лишь в редких случаях, и пользовать их надо с умом.
← →
KAA (2002-03-29 12:48) [9]>Delirium
Тогда повторю вопрос, как еще можно работать с отдельными ячейками таблицы, в частности пробежать в цикле по ним?
← →
Delirium (2002-03-29 13:06) [10]
> KAA ©
На вопрос КАК - ответ дан : пользровать курсор. Мне-же интересно в какой ситуации тебе это понадобилось делать средствами MSSQL?
← →
KAA (2002-03-29 14:20) [11]>Delirium
Да я все бьюсь с шахматкой, тест делаю. Есть произвольное чило людей, которых нужно протестировать, есть произвольное число тестов. По каждому тесту человек получит сколько-то балов. Нужно все это в одну матрицу вывести.
← →
Delirium (2002-03-29 14:55) [12]Если OLAP пользовать не хочешь (или не можешь) - в Delphi есть компонент TDecisionCube
← →
KAA (2002-03-29 15:27) [13]OLAP надо сесть и спокойно почитать. Просто у меня тест уже готов, используя то что мне уже посоветовали, шахматка у меня уже получилась. А будет спокойный денек, почитаю и про OLAP.
← →
KAA (2002-03-29 15:31) [14]А по поводу компонент в Делфи, мне этот вариант не подходит, т.к. я пишу исключительно хранимые процедуры в MSSQL, не привязываясь к какому-либо языку.
← →
JibSkeart (2002-03-29 17:45) [15]Ну ребята не знаю с курсорами некоторые веши делать удобнее
то что реже используешь конечно
я допустим их использую в тех случаях когда все таблички надо посмотреть и что то в таком духе ...
← →
Fay (2002-03-31 04:48) [16]2Alex-A
IMHO, LOCAL курсоры в этом не сильно нуждаются
2SergSuper
>А вообще в MSSQL с курсорами лучше не работать,
>тем более чайнику Необходимость их использования
>возникает очень редко, а соблазн их использовать уводит от
>реаляционной теории (чё-то как-то слишком умно написал)
Чайнику лучше не работать с курсорами - это точно.
Но не_чайники в чём провинились?
Если можно, раскройте получше тему "уводит от реаляционной теории "
← →
SergSuper (2002-04-01 10:51) [17]2 Fay
Чуть выше эта тема раскрыта, мессадж от 29.03.02 12:48
Тогда повторю вопрос, как еще можно работать с отдельными
ячейками таблицы, в частности пробежать в цикле по ним?
Очень характерный пример. Вместо того что бы работать с массивом данных, KAA думает как ему пробежаться по записям.
2 KAA
С курсорами за день можно разобраться, а вот опыт года работы на SQL за день не получить :)
← →
KAA (2002-04-01 12:10) [18]>Delirium
Шеф, он же писатель клинеской части программы, вспомнил что есть такая замечаетльная вещь как TDecisionCube, и мне не обязательно шахматку делать.
Вот только в этом кубе сам черт голову сломет, да еще делфи периодически разваливается из-за него.
Где-нибудь есть какая-нибудь дока по нему, чтоб понятно было и на русском?
← →
KAA (2002-04-01 13:02) [19]>SergSuper
Что значит, работать с массивом данных?
Первоначальная идея была сделать все средствами SQL, не привлекая клиента. Хотя сейчас уже вроде как готовы возложить часть функций на клиента.
← →
SergSuper (2002-04-01 13:56) [20]2 KAA
Да я не знаю, как это объяснить
Допустим у Вас есть таблица с остатками денег на счете по дате. В какой-то момент пришли деньги.
Вы можете найти запись с текущей датой и к каждой последющей записи прибавлять изменение суммы. Сделаете курсор и всё будет работать.
Можно рассуждать не так: прибавить изменение суммы для записей, у который дата больше текущей. И написать update ... where date>@date. С одной стороны тоже самое, но если приглядеться, то уже мы не употребляем слово "запись" в единственном числе.
Вроде на таком примере всё очевидно, но для более сложных задач начинающих очень часто тянет использовать первый способ.
Удачи
С приветом Сергей
PS. А часть функций перекладывать на клиента не надо, даже если это кажется проще. Клиент должен только отображать.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c