2016-08-24 4 views
1

У меня есть хранимая процедура spResultFlagUpd, которая получает 2 параметра @p_Code_Sazman и @p_Code_Marhale. Эта хранимая процедура должна обновить столбец с ИСТИНА и ЛОЖЬ значенийОшибка выполнения команды SQL Server

ALTER PROCEDURE [dbo].[spResultFlagUpd] 
    @p_Code_Sazman Nchar(6) = Null, 
    @p_Code_Marhale Nchar(6)=Null 
AS 
    IF EXISTS(SELECT * FROM tblResult 
       WHERE Code_Marhale = @p_Code_Marhale 
       AND Code_Sazman = @p_Code_Sazman 
       AND Confirmed = 1 AND SendFile = 1 AND MakeFileFlag = 1) 
    BEGIN 
     UPDATE tblResult 
     SET MakeFileFlag = 0 
     WHERE Code_Marhale = @p_Code_Marhale 
      AND Code_Sazman = @p_Code_Sazman 
    END 

Когда я бегу

exec spResultFlagUpd @p_Code_Marhale='000060', @p_Code_Sazman='000021' 

не обновляет таблицу.

Но когда я запускаю код обновления в виде SQL-запроса, он работает правильно.

Когда я пишу код чистый, как

update tblResult 
    set MakeFileFlag=0 
    where [email protected]_Code_Marhale and [email protected]_Code_Sazman 

работает правильно

+0

Проверьте, возвращает ли этот запрос какого-либо результата 'SELECT * FROM tblResult WHERE Code_Marhale = '000060' И Code_Sazman = '000021' AND Confirmed = 1 AND SendFile = 1 AND MakeFileFlag = 1' –

+0

yes, он возвращает 1 уникальную запись – Mina

+0

, даже когда я нажимаю правой кнопкой мыши на sp и выполняю sp из этого окна со значениями, он тоже работает правильно @Prdp – Mina

ответ

-1

существует оператор работает. Проблема заключается в обновлении. Ваш код компилируется до запуска if. Таким образом, ошибка возникает на этапе компиляции.

Вы можете исправить это с помощью динамического SQL:

IF EXISTS (select * from tblResult where [email protected]_Code_Marhale and [email protected]_Code_Sazman and Confirmed=1 and SendFile=1 and MakeFileFlag=1) 
begin 
    exec sp_execute_sql N'update tblResult set MakeFileFlag=0 where [email protected]_Code_Marhale and [email protected]_Code_Sazman'; 
End; 

попробовать этот код с собственными модификациями

+1

Я попробовал это утверждение IF EXISTS, опять же он не обновил – Mina

+1

и нет ошибки? – Ralis

+0

да, без ошибок – Mina

Смежные вопросы