如何在使用executeNonQuery()时从sql返回所需的值

时间:2012-02-09 18:21:02

标签: asp.net tsql data-access-layer

如果条件存在,我想更新数据库中的记录。

set nocount off;

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

但如果ParentID不存在则返回-1。

我使用ExecuteNonQuery()来运行此过程

1 个答案:

答案 0 :(得分:4)

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