我有一个存储过程,首先检查一些记录是否存在。如果已经存在则执行更新语句(如果更新语句正常工作则返回受影响的行,否则返回值为-1000的变量)否则它将选择值为-2000的变量。
问题是如果我在sql server中执行它会正常工作但是当我从C#调用它然后它返回current_indent('')或者只返回-1没有-1000或-2000返回。
USE [youfuntube]
GO
ALTER PROCEDURE [dbo].[usp_change_pass]
@e_mail varchar(60),
@old_pass varchar(27),
@new_pass varchar(27)
AS
BEGIN
declare @exist int;
Set @exist =0;
Select @exist=COUNT( userinfo_signup.e_mail) from userinfo_signup where userinfo_signup.e_mail=@e_mail;
if(@exist>0)
BEGIN
SET @exist=0;
SELECT @exist= COUNT ( userinfo_signup.e_mail) from userinfo_signup Where userinfo_signup.e_mail=@e_mail And userinfo_signup.password=@old_pass;
if(@exist>0)
Begin
UPDATE userinfo_signup
Set password=@new_pass
Where e_mail=@e_mail AND password=@old_pass;
Select IDENT_CURRENT( 'userinfo_signup');
End
ELSE
begin
Set @exist=-1000;
SELECT @exist;
end
END
ELSE
BEGIN
SET @exist=-2000;
Select @exist;
END
END
GO
答案 0 :(得分:1)
我会尝试使用MERGE命令而不是if存在。以下是该命令的简单介绍:http://blog.sqlauthority.com/2008/08/28/sql-server-2008-introduction-to-merge-statement-one-statement-for-insert-update-delete/