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