Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-70060
Velocity
2002-02-18 10:12
2002.04.22
ListBox на WinAPI


1-69798
Zombie
2002-04-10 15:04
2002.04.22
Как увидеть const array в другом юните???


1-69925
Сергей Чурсин
2002-04-08 11:10
2002.04.22
Возможно ли вставить чужое окно (по HWND) в форму ?


1-69931
snoup
2002-04-09 19:19
2002.04.22
Как скрыть/показать курсор мышки?


1-69884
Alibaba
2002-04-09 12:11
2002.04.22
TStringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский