Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Непонятное поведение кода


Автор: MadCoder 5.8.2008, 11:19
Когда я пишу этот код, цикл ведет себя весьма странно:


Код

While.....
.....
-------------------------------- ОБРАБОТКА СОБЫТИЙ -------------------------------- 
if (@call_result_id is not NULL) and (ISNUMERIC(@call_result_id)=1)
    begin
    -- Закрываем старый метод
    UPDATE tblMtStory
    SET 
    end_date=GETDATE(),
    empl_end_date=1
    where mt_h_id=@mt_h_id
    -- Открываем новый
    INSERT INTO tblMtStory (mt_id, contr_id, start_date, empl_start_id)
    VALUES(@call_result_id, @contr_id, GETDATE(), 1);
    -- Открепляем договор от пользователя
    UPDATE tblContrApplies 
    SET
    ca_date_out=GETDATE(),
    chief_id_off=1
    WHERE contr_id=@contr_id and ca_date is not NULL
    and ca_date_out is NULL
    end


А именно: прогоняется каждую запись несколько раз или вообще застревает на одной записи. В чем может быть дело?

Автор: MadCoder 5.8.2008, 12:07
Опытным путем выяснил, что это из-за этого куска кода:
Код

INSERT INTO tblMtStory (mt_id, contr_id, start_date, empl_start_id)
VALUES(@call_result_id, @contr_id, GETDATE(), 1)


Вопрос: что в нем не так, почему он зацикливает цикл? =)

Автор: Akina 5.8.2008, 12:30
А где у тебя этот код? Может, это кусок кода триггера, который вызывает срабатывание самого себя?

Автор: MadCoder 5.8.2008, 13:25
Удалено

Автор: MadCoder 5.8.2008, 14:21
Гы, понял в чем прикол smile .
Я добавлял данные в таблицу, из который курсор, который добавляет эти данные, берет данные, которые он добавляет. В общем, цикл =).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)