Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
14-69979
Афоня
2002-03-07 10:23
2002.04.22
Помогите найти компонент


1-69764
kopachev
2002-04-08 16:43
2002.04.22
Подкиньте идею


7-70039
Devid
2002-01-27 15:47
2002.04.22
Как из дельфи позвонить на другой комп


1-69905
inko
2002-04-09 15:43
2002.04.22
Сообщения.


3-69746
vasilly
2002-04-01 08:43
2002.04.22
Нельзя сохранить из дельф больше чем 256 символов в MS SQL!!!