Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 курсоры в SQL  [new]
smbekzat
Member

Откуда:
Сообщений: 16
Помогите пожалуйста с помощью курсора "зачислить" и "отчислить" студента. То есть имеется заполненная БД со студентами, их оценками, учителями и тд. Надо с помощью курсора удалить студента любого, и снова восстановить.

Сообщение было отредактировано: 31 мар 15, 17:34
31 мар 15, 16:25    [17455280]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
londinium
Member

Откуда: Киев
Сообщений: 1179
А где таблицы и желаемый результат?
31 мар 15, 16:26    [17455283]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
smbekzat
Member

Откуда:
Сообщений: 16
londinium,

К сообщению приложен файл. Размер - 37Kb
31 мар 15, 16:32    [17455304]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
smbekzat
. Надо с помощью курсора удалить студента любого, и снова восстановить.

Курсор не может изменять данные.
Вы наверное опять неправильно прочитали задание и перепутали функцию с триггером
31 мар 15, 16:35    [17455317]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
o-o
Guest
с помощью курсора можно что-то делать массово построчно, но курсор для *точечного* удаления?
это тест из клуба великих извращенцев или проверка на дебилизм

Cursor (databases)
In SQL procedures, a cursor makes it possible to define a result set (a set of data rows) and perform complex logic on a row by row basis.
какое же будет row by row,
если в резалтсете 1 строка?
31 мар 15, 16:39    [17455339]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
smbekzat
Member

Откуда:
Сообщений: 16
Glory,

кпц у нас преподы. Вот ему только что говорю мол курсоры не изменяют данные, так он такой : АААА. За голову берется и говорит перепутал. Теперь говорит объединить две группы в одну. Из двух групп студентов сделать одну
31 мар 15, 16:40    [17455345]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
o-o
с помощью курсора можно что-то делать массово построчно, но курсор для *точечного* удаления?


Я думаю речь идёт не об удалении, а о том, чтобы пометить как отчисленного. Сменить флаг, не удаляя запись. Но честно говоря, препод готовить выпускников-извращенцев.
31 мар 15, 16:41    [17455352]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
smbekzat
. Из двух групп студентов сделать одну

- Петька, ты чего тут копаешь ?
- Да вот преподаватель по математики задал квадратные корни найти. Вот и копаю.
- Мда, не повезло.
- Это что. Вот Василию Ивановичу вообще задали из многочлена одночлен сделать.
31 мар 15, 16:44    [17455368]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
smbekzat
Member

Откуда:
Сообщений: 16
Видимо кроме издевок нечем помочь не можете?
31 мар 15, 16:46    [17455376]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
smbekzat
Видимо кроме издевок нечем помочь не можете?

Глупые задачи не имеют решения.
Или любое решение годится для глупой задачи.
31 мар 15, 16:48    [17455383]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
smbekzat
Member

Откуда:
Сообщений: 16
Glory,
так это вообще возможно? Объединение двух групп студентов в БД курсором?
31 мар 15, 16:50    [17455396]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
smbekzat
Glory,
так это вообще возможно? Объединение двух групп студентов в БД курсором?

Еще раз
Курсор == select
Вы спрашиваете, можно ли выбрать что-то из ваших таблиц ? Или вы спрашиваете, можно ли изменить данные в ваших таблицах ?
31 мар 15, 16:52    [17455404]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
londinium
Member

Откуда: Киев
Сообщений: 1179
автор
ак это вообще возможно? Объединение двух групп студентов в БД курсором?

все возможно. Но давайте для начала Вы расскажете, что такое курсор, а то у меня есть подозрение, что Ваша/Вашего преподавателя трактовка отличается от общепринятой
31 мар 15, 16:53    [17455405]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
smbekzat
Glory,
так это вообще возможно? Объединение двух групп студентов в БД курсором?



Курсор — SQL (Oracle, Microsoft SQL Server) — получаемый при выполнении запроса результирующий набор и связанный с ним указатель текущей записи.

https://ru.wikipedia.org/wiki/Курсор_(базы_данных)

Можно объединить две группы студентов и пройти по этому "результирующему набору" курсором.

Может быть ваша задача звучит так: "Объединить две группы студентов, используя при этом курсор?"
31 мар 15, 17:09    [17455506]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
o-o
Guest
Glory
smbekzat
. Надо с помощью курсора удалить студента любого, и снова восстановить.

Курсор не может изменять данные.

мы же в клубе извращенцев.
еще вновь обвиняют в нежелании помочь.
я отвечу развернуто и аргументированно.
вот удаление студента через ж курсор:
create table dbo.st (stud_id int, name varchar(100));
insert into dbo.st values(1, '1'), (2, '2');

declare
	@stud_id int,
	@name varchar(100),
	@stud_id_for_del int = 2
	
declare c cursor fast_forward for
	select stud_id, name
	from dbo.st
	order by stud_id;
open c;

fetch next from c into @stud_id, @name;
while @@fetch_status = 0
begin
   if @stud_id = @stud_id_for_del
   delete dbo.st
   where stud_id = @stud_id
   fetch next from c into @stud_id, @name;
end;
close c;
deallocate c;


вот без:
delete dbo.st
where stud_id = @stud_id_for_del


почувтвуйте разницу и продолжайте извлекать квадратный корень
31 мар 15, 17:20    [17455567]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7969
Сразу вспомнился анекдот, про солдата, подметающего плац ломом.
31 мар 15, 17:30    [17455620]     Ответить | Цитировать Сообщить модератору
 Re: КУРСОРЫ В SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
Владислав Колосов
Сразу вспомнился анекдот, про солдата, подметающего плац ломом.


Или копающего от командира и до следующего дуба
31 мар 15, 17:33    [17455636]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
smbekzat
Member

Откуда:
Сообщений: 16
a_voronin
"Объединить две группы студентов, используя при этом курсор?"

Да, именно такое задание было дано
31 мар 15, 17:58    [17455759]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
smbekzat
a_voronin
"Объединить две группы студентов, используя при этом курсор?"

Да, именно такое задание было дано


Ну нужно объединить две группы студентов используя UNION в запросе, а потом, чтобы удовлетворить препода -- пройтись по этому запросу курсором
31 мар 15, 18:05    [17455784]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
smbekzat
a_voronin
"Объединить две группы студентов, используя при этом курсор?"

Да, именно такое задание было дано


Вы хоть поняли, что препод заставляет вас копать отсюда и до обеда?
31 мар 15, 18:05    [17455788]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4315
a_voronin
smbekzat
пропущено...

Да, именно такое задание было дано


Ну нужно объединить две группы студентов используя UNION в запросе, а потом, чтобы удовлетворить препода -- пройтись по этому запросу курсором

поочередно заполнив поле UNITED_BY_CURSOR значением TRUE
31 мар 15, 18:13    [17455818]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1516
Glory,
так это вообще возможно? Объединение двух групп студентов в БД курсором?


smbekzat,
у вас довольно странная модель базы данных, но это опустим

допустим вы знаете какие именно группы надо объединить или любые? приведу пример любых двух

DECLARE
       @GroupID1 INT,
       @GroupID2 INT,
       @StudentID INT,
       @Cur CURSOR

--необходимо раскомментировать если известно какие именно группы надо объединять
--SET @GroupID1 = 1
--SET @GroupID2 = 2

IF ISNULL(@GroupID1, 0) = 0
    SELECT @GroupID1 = Grup_ID FROM [StudySchema].[Grup]

IF ISNULL(@GroupID2, 0) = 0
    SELECT @GroupID2 = Grup_ID FROM [StudySchema].[Grup] WHERE Grup_ID <> @GroupID1

SET @Cur = CURSOR FOR
                     SELECT Stud_ID FROM [StudySchema].[Students] WHERE Grup_ID = @GroupID1

OPEN @Cur
FETCH NEXT FROM @Cur INTO @StudentID
WHILE @@FETCH_STATUS = 0 BEGIN
     UPDATE [StudySchema].[Students]
        SET Grup_ID = @GroupID2
      WHERE Stud_ID = @StudentID
FETCH NEXT FROM @Cur INTO @StudentID               
END
CLOSE @Cur
DEALLOCATE @Cur


Вариант без курсора:
         UPDATE [StudySchema].[Students]
            SET Grup_ID = 1
          WHERE Grup_ID = 2


в учебных целях чего только не напридумывают
31 мар 15, 21:15    [17456384]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
o-o
Guest
felix_ff
в учебных целях чего только не напридумывают

так чему обучают-то, как НЕ НАДО делать?
почему-то мне кажется, потом даже не прокомментируют в духе "это был мегаизврат,
больше так никогда не делайте, + теперь я вам покажу, как это НАДО БЫЛО сделать"
так трудно БОЛ открыть и оттуда пример задать, раз с фантазией напряг?
да ни один студент не догадается ответ прямо там же поискать,
это ж последнее дело -- открыть документацию. есть же супер-интернет и sql.ru

да если бы кто и догадался, это же был бы первый шаг к вырабатыванию правильного инстинкта:
не знаешь, с чего начать -- ознакомься с документацией
...мир давно вывернулся наизнанку, короче...
31 мар 15, 21:36    [17456443]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
o-o
да если бы кто и догадался, это же был бы первый шаг к вырабатыванию правильного инстинкта:
не знаешь, с чего начать -- ознакомься с документацией
...мир давно вывернулся наизнанку, короче...


Ты думаешь преподы знают слово MSDN? Я как-то попытался что-то сказать преподу по поводу нюансов турбопаскаля и как там правильно это делать, на что он громогласно заявил, что учит не конкретному языку, а некоему общему подходу, который ни в коем случае не должен учитывать особенностей конкретных языков. Дело было более 20 лет назад. А на дипломе мне вообще чуть трояк не влепили, за то, что я представил программу, которая продавалась за бабки, но была "не слишком технологичной".
31 мар 15, 22:13    [17456534]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
o-o
Guest
+ to a_voronin

может, на ловца и зверь бежит?
у нас все преподы по основным предметам были вменяемые,
а в большинстве своем -- весьма достойные личности.

по поводу трояка: а что, на дипломе никакой комиссии не было?
это что за такой интересный ВУЗ, Московский?
мне вот неизвестно что светило по инглишу по причине взаимной симпатии с англичанкой.
уж не знаю, откуда такую и откопали.
на мою просьбу о переводе в другую группу не отреагировали,
пришлось стараться, чтобы об этом попросила она сама, но непробиваемая была тетя, кошмар какой-то.
вот как-то думаю, не заказать ли любимой преподавательнице песню на Радио СИ, дозваниваюсь,
объявляю ее имя и фамилию, посвящаю ей God Save The Queen (Sex Pistols, naturally)
вроде же слова отлично разбираются,
There's no future, no future,
No future for you
вообще повторяют четко и не кривляясь, так не проканалась ни капельки.
но зато на экзамене присутствовала завкафедрой, да, после моих прочих изысканий.
так что никаких тояков, как бы тетенька ни старалась
1 апр 15, 00:41    [17456915]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
smbekzat
Member

Откуда:
Сообщений: 16
felix_ff, в том то и дело что эта "модель" бд не моя. Она нам выдается как стандарт по которому даются определенные задания. Учителя и их методики меня поражают. Спасибо большое за помощь!
1 апр 15, 14:42    [17459618]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4806
o-o
+ to a_voronin

может, на ловца и зверь бежит?
у нас все преподы по основным предметам были вменяемые,
а в большинстве своем -- весьма достойные личности.

по поводу трояка: а что, на дипломе никакой комиссии не было?
это что за такой интересный ВУЗ, Московский?
мне вот неизвестно что светило по инглишу по причине взаимной симпатии с англичанкой.
уж не знаю, откуда такую и откопали.
на мою просьбу о переводе в другую группу не отреагировали,
пришлось стараться, чтобы об этом попросила она сама, но непробиваемая была тетя, кошмар какой-то.
вот как-то думаю, не заказать ли любимой преподавательнице песню на Радио СИ, дозваниваюсь,
объявляю ее имя и фамилию, посвящаю ей God Save The Queen (Sex Pistols, naturally)
вроде же слова отлично разбираются,
There's no future, no future,
No future for you
вообще повторяют четко и не кривляясь, так не проканалась ни капельки.
но зато на экзамене присутствовала завкафедрой, да, после моих прочих изысканий.
так что никаких тояков, как бы тетенька ни старалась


Да известный Московский ВУЗ МИФИ, факультет Кибернетики. В моё время считался пристижным местом подготовки программистов. Трояк не поставили. Вмешалась зам завкафедрой, которая была в комиссии. Там пришел какой-то чел в комиссии, которого я раньше и не видел. Вот от него и пошло всё.
1 апр 15, 16:49    [17460653]     Ответить | Цитировать Сообщить модератору
 Re: курсоры в SQL  [new]
o-o
Guest
+ to a_voronin
не в обиду МИФИ, но вот по Фрейду оговорки/описки они не случайны.
я когда слово читаю, и оно не соответствует правильному написанию,
у меня по очереди мелькают всевозможные варианты в определенном порядке.
не поверите, "пристижный" у меня машинально прочелся как "пристыженный".
только через 5 секунд, наверное, дошло: прЕстижный.
пристыдили, так пристыдили, короче
1 апр 15, 17:11    [17460804]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить