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

Откуда:
Сообщений: 18
Скрипт при выполнении не выдает никаких ошибок, пишет, что все апдейты прошли нормально.
Но информация не меняется
И при повторном запуске этого же скрипта он опять находит что обновить в тех же количествах.
declare  @maxgroup int;
set @maxgroup=(select  MAX(GroupeInfo.GroupeID) from GroupeInfo);
declare @i int;
set @i=1;
while (@i<=@maxgroup)
begin;
 declare @grid int;
 set @grid=0;
	SET @grid=(select  GroupeID from GroupeInfo where GroupeID=@i);
	if (@grid>0)
	begin;
		Declare @LP int;
		set @LP= (select LearningPlanID from GroupeInfo where GroupeID=@grid);
		if (@LP>0)
			update SabjectGroupeInfo set LearningPlanID=@LP where (SubjectGroupeInfoID in (select SubjectGroupeInfoID from TeacherSubjGroup where GroupeID=@grid ) and LearningPlanID<>@LP)
	end;
	set @i=@i+1;
	
end;
Go
14 ноя 14, 17:02    [16847910]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
begin;
14 ноя 14, 17:03    [16847913]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
вы ";" от скуки в таком количестве налепили ?
14 ноя 14, 17:04    [16847925]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
Glory
Member

Откуда:
Сообщений: 104760
А вы вместо update SabjectGroupeInfo set LearningPlanID=@LP поставьте select LearningPlanID,@LP from SabjectGroupeInfo и увидите чего и сколько обновляется
14 ноя 14, 17:06    [16847934]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
MariLu
Member

Откуда:
Сообщений: 18
В том и прикол, он показывает, что все выполнил раз за разом
Вариант
declare  @maxgroup int;
set @maxgroup=(select  MAX(GroupeInfo.GroupeID) from GroupeInfo);
declare @i int;
set @i=1;
while (@i<=@maxgroup)
begin
 declare @grid int;
 set @grid=0;
	SET @grid=(select  GroupeID from GroupeInfo where GroupeID=@i);
	if (@grid>0)
	begin
		Declare @LP int;
		set @LP= (select LearningPlanID from GroupeInfo where GroupeID=@grid);
		if (@LP>0)
			/*update SabjectGroupeInfo set LearningPlanID=@LP where (SubjectGroupeInfoID in (select SubjectGroupeInfoID from TeacherSubjGroup where GroupeID=@grid ) and LearningPlanID<>@LP)*/
			select  LearningPlanID, @LP from SabjectGroupeInfo where (SubjectGroupeInfoID in (select SubjectGroupeInfoID from TeacherSubjGroup where GroupeID=@grid ) and LearningPlanID<>@LP)
	end;
	set @i=@i+1;
	
end;
Go


Показывает именно ту выборку, которая нужна, но ничего не применяется
14 ноя 14, 17:17    [16847986]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
MariLu
но ничего не применяется


обновление у вас закомментировано
14 ноя 14, 17:20    [16847997]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
MariLu
Member

Откуда:
Сообщений: 18
(68 row(s) affected)

(43 row(s) affected)

(12 row(s) affected)

(32 row(s) affected)

(15 row(s) affected)

(37 row(s) affected)
..... и т. д.

И

Auto-attach to process '[2508] [SQL] (local)' on machine '(local)' succeeded.
The thread '(local) [55]' (0x2a050) has exited with code 0 (0x0).
The thread '(local) [55]' (0x2a050) has exited with code 0 (0x0).
The program '[2508] [SQL] (local): (local)' has exited with code 0 (0x0).
14 ноя 14, 17:21    [16848005]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
MariLu
Member

Откуда:
Сообщений: 18
Я в курсе, что у меня закоментировано обновление :). Когда я раскоментировываю все равно ничего не обновляется %)
14 ноя 14, 17:23    [16848012]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
MariLu
Я в курсе, что у меня закоментировано обновление :). Когда я раскоментировываю все равно ничего не обновляется %)


значит то , что вы написали делает не то , что вы хотите. разбирайтесь с алгоритмом.
14 ноя 14, 17:24    [16848014]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
MariLu
Auto-attach to process '[2508] [SQL] (local)' on machine '(local)' succeeded.
The thread '(local) [55]' (0x2a050) has exited with code 0 (0x0).
The thread '(local) [55]' (0x2a050) has exited with code 0 (0x0).
The program '[2508] [SQL] (local): (local)' has exited with code 0 (0x0).


а енто откуда идет ? У вас небось еще и триггер есть на апдейт ?
14 ноя 14, 17:24    [16848018]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
MariLu
Member

Откуда:
Сообщений: 18
Это из Microsoft SQL Server Management Studio
Триггера самописного нет. Есть внешний ключ..
14 ноя 14, 17:27    [16848031]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
весь ваш код вообще чушь. перепишит ена один единственный UPDATE
14 ноя 14, 17:29    [16848040]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
MariLu
Member

Откуда:
Сообщений: 18
Что-то не придумывается как
14 ноя 14, 19:40    [16848675]     Ответить | Цитировать Сообщить модератору
 Re: Помогите найти ошибку в скрипте  [new]
MariLu
Member

Откуда:
Сообщений: 18
По-моему, для одноразового скрипта нормально, все просто и вроде как должно работать :( печаль такая.
14 ноя 14, 19:51    [16848737]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить