Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

Неужели циклы в 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 вся ветка

Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.045 c
11-1145518851
smok_red
2006-04-20 11:40
2007.02.04
почему возникает


15-1168460341
ferr
2007-01-10 23:19
2007.02.04
Eagles -- Hotel California (original videoClip)


15-1168587675
Ega23
2007-01-12 10:41
2007.02.04
Вопрос для знатоков Oracle


8-1149179500
brother
2006-06-01 20:31
2007.02.04
Библиотека для работы с Mp3


2-1168970687
malyar
2007-01-16 21:04
2007.02.04
opendialog & savedialog





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский