Как вернуть желаемое значение из SQL при использовании executeNonQuery () - PullRequest
1 голос
/ 09 февраля 2012

Я хочу обновить запись в базе данных, если условие существует.

set nocount off;

if exists ( select * from ParentTable where ID=@ParentID )
  update ChildTable set Title=@Title,ParentID=@ParentID where ID=@ID;
else return -2;

но возвращает -1, если ParentID не существует.

Я использую ExecuteNonQuery () для запуска этой процедуры

1 Ответ

4 голосов
/ 09 февраля 2012

Возвращаемым значением ExecuteNonQuery является количество затронутых строк, не пользовательский код возврата. Хотя -1 (текущее возвращаемое значение) кажется подходящей заменой в данном конкретном случае, для решения более общего случая вам придется использовать ExecuteScalar и использовать приведенный ниже шаблон:

declare @retval int

if exists ( select * from ParentTable where ID=@ParentID )
begin
    update ChildTable set Title=@Title,ParentID=@ParentID where ID=@ID;
    select @retval = @@ROWCOUNT
end
else 
    select @retval = -1

select @retval
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...