Форум: "Базы";
Текущий архив: 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