2
我有一个存储过程,首先检查某些记录是否存在。如果已经存在,则执行更新语句(如果update语句正常工作,则返回受影响的行,否则返回具有-1000值的变量)否则,它会选择值为-2000的变量。SQL服务器更新插入语句
问题是它工作正常,如果我在sql服务器执行它,但是当我从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 [email protected]_mail;
if(@exist>0)
BEGIN
SET @exist=0;
SELECT @exist= COUNT (userinfo_signup.e_mail) from userinfo_signup Where [email protected]_mail And [email protected]_pass;
if(@exist>0)
Begin
UPDATE userinfo_signup
Set [email protected]_pass
Where [email protected]_mail AND [email protected]_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
也许你可以添加你的C#代码,因为你的问题发生在那里? –
YOu需要注意:你不是**返回** @ exists作为返回参数(带有'RETURN @ exists'语句);而是将其选择到输出结果集。这取决于你如何从你的C#代码中获取返回数据(与结果集)...... –
如果用户正在更改密码,用户是否已经登录,那么用户已经存在。看来你的逻辑可以简化。也同意,看着C#代码会有所帮助 – rjsteward