如果条件,则从存储过程设置返回值

时间:2010-12-06 10:42:00

标签: sql-server sql-server-2005

我有一个像这样的条件的SP

IF NOT EXISTS (Select * from bom_steel where fpart = @fpart)
        BEGIN
            INSERT INTO bom_steel 
            VALUES (@fPart,@fL,@fH,@fW,@fDesc)
        END
    ELSE if(Select * from Employee where Empid = @empid)
        BEGIN
            Return  ‘1’
        END
Else
Begin
UPDATE bom_steel 
            SET fl=@fl, fh=@fH, fW=@fW 
            where Empid =@ empid
end

when this condition passes , I am returning an value  as  1
ELSE if(Select * from Employee where Empid = @empid)
        BEGIN // here i will  to be  doing any operation(DML) .so i want to just return an value as  '1'                
               Return  ‘1’
        END

在我的代码后面  这里cmd是SqlCommand

Int intcount= cmd.ExecuteNonQuery();

在这种情况下,它总是将值重新调整为-1;

即使我将返回值设置为'1'仍然将值恢复为-1

任何人都可以告诉我该怎么办才能从那里返回一个值

任何帮助都会很棒  感谢

2 个答案:

答案 0 :(得分:1)

您正在尝试返回字符值,而不是int。尝试删除单引号。

InSane也说了些什么; ExecuteNonQuery()返回受影响的行数。虽然这让我想到你的榜样;为什么会返回-1?

答案 1 :(得分:1)

尝试

Int intcount= cmd.ExecuteScalar();

而不是

Int intcount= cmd.ExecuteNonQuery();

ExecuteNonQuery()仅返回受影响的行数。

另外,删除返回值中的单引号,如下面Andrew所示,或者将intCount的类型改为字符串。