Вниз
Скачать: CL | DM;

Неужели циклы в T-SQL так тупо сделаны - неверю...   Найти похожие ветки 

 
Kolan ©   (2006-11-14 22:18) [0]

Здравствуйте,
 Сижу, учусь, делаю лабораторную. Вот пример из нё:

ALTER PROCEDURE Accordance
AS
 DECLARE X CURSOR FOR
   SELECT COUNT(Number) AS AllEmp, Department
   FROM Employee
   GROUP BY Department;
OPEN X
DECLARE @Qty int, @Dept tinyint;
 FETCH NEXT FROM X INTO @Qty, @Dept
 UPDATE Department
   SET EmployeeCount = @Qty
   WHERE Number = @Dept;


WHILE @@FETCH_STATUS = 0
BEGIN
 FETCH NEXT FROM X INTO @Qty, @Dept
 UPDATE Department
   SET EmployeeCount = @Qty
   WHERE Number = @Dept;

END  
CLOSE X
DEALLOCATE X


Моя рука к этому не притрагивалась - только набрал. Работает. Но неужели нельзя организовать цикл так чтобы два раза не писать одно и тоже? Если можно, то как?


 
Johnmen ©   (2006-11-14 22:27) [1]

Для while цикла всегда, не зависимо от языка, нужны разгонные значения. Т.к. он с предусловием.
Поэтому так:

FETCH NEXT FROM X INTO @Qty, @Dept
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Department
  SET EmployeeCount = @Qty
  WHERE Number = @Dept;
FETCH NEXT FROM X INTO @Qty, @Dept
END  


 
Anatoly Podgoretsky ©   (2006-11-14 22:28) [2]

> Kolan  (14.11.2006 22:18:00)  [0]

Ты форум перепутал, у нас тут по Дельфи.
Сходи лучше на sql.ru там есть специализированый форум по MS SQL
Только не надо говорить, мол я в Дельфи программирую, программируй в чем хочешь, но это дело сервервное.


 
Kolan ©   (2006-11-14 22:46) [3]

Ну вот.. а то препод сбил, блин с толку что тут так надо делать(2 раза) и по другому неполучится.
Благодарю..


 
Kolan ©   (2006-11-14 22:46) [4]

> Только не надо говорить, мол я в Дельфи программирую, программируй
> в чем хочешь, но это дело сервервное.

Дык я же там никого не знаю :)


 
Kolan ©   (2006-11-14 22:47) [5]

Вопросы по базам данных (вопросы по использованию и программированию БД )
Вороде не нарушил правил .

ЗЫ
 А программирую я на Delphi! :)


 
Anatoly Podgoretsky ©   (2006-11-14 22:51) [6]

> Kolan  (14.11.2006 22:46:04)  [4]

Не волнуйся, там люди культурные, не в пример нам.


 
Anatoly Podgoretsky ©   (2006-11-14 22:53) [7]

> Kolan  (14.11.2006 22:47:05)  [5]

Вроде нарушил, это конференция по Дельфи и программирование в ней связаное с базами.
Твой вопрос ничего общего с Дельфи не имеет.
Обычно такие вопросы мы не закрываем, а говорим куда лучше сходить.
И ответ квалифицированый легче получить в специализированой конференции.


 
Kolan ©   (2006-11-14 23:00) [8]

> [7] Anatoly Podgoretsky ©   (14.11.06 22:53)


Ок. Учту :)


 
sniknik ©   (2006-11-14 23:06) [9]

Johnmen ©   (14.11.06 22:27) [1]
ктото тут трюк с GOTO показывал, не будем про то хорошо это или плохо, делает из while аналог repeat until (в одном месте выборку писать, при больших удобноЮ не надо туда сюда копировать)

GOTO Start
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Department
 SET EmployeeCount = @Qty
 WHERE Number = @Dept;
Start:
FETCH NEXT FROM X INTO @Qty, @Dept
END


 
Johnmen ©   (2006-11-14 23:12) [10]


> sniknik ©   (14.11.06 23:06) [9]


А-а-а... Там и метки ещё есть...:)))


 
Kolan ©   (2006-11-14 23:28) [11]

> sniknik ©   (14.11.06 23:06)

Понятно. Благодарю. :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: -0.973 c
6-1156909299
ZLOFENIX
2006-08-30 07:41
2007.02.04
посылка данных


2-1169110118
dsa256
2007-01-18 11:48
2007.02.04
Форма окна по контуру картинки


2-1168964759
Kolan
2007-01-16 19:25
2007.02.04
Вопрос по реляционной алгебре.


2-1168787120
Pasha L
2007-01-14 18:05
2007.02.04
перекинуть картинку из twebBrowser, в timage


4-1158830774
2ded
2006-09-21 13:26
2007.02.04
JOB_INFO_1 PagesPrinted




   Наверх