2013-02-24 28 views
0

我有與UID,用戶名和密碼 和程序表檢查登錄檢查,如果在一個表中存在的數據,如果是這樣做要不然這(確實存在數據),但只有其他部分工作

create procedure getlogin(@username varchar(50),@password varchar(20),@granted int output) 
as 
begin 
    if exists (select top 1 uid 
       from user_detail 
       where username = @username and password = @password) 
     set @granted=1 
    else 
     set @granted=-1 
end 

但我總是得到-1

+0

你是怎麼調用這個存儲過程的? – 2013-02-24 21:37:19

+3

您是否嘗試過聲明變量,設置它們並運行查詢以查看您是否獲得了結果?我的猜測是你不是。可能是因爲您的用戶名或密碼與表格不匹配,可能是因爲空格或由於區分大小寫。如果該查詢有效,則在沒有SP本身的情況下嘗試SP的全部內容。然後在調用SP時重複檢查是否使用了OUTPUT子句。 – 2013-02-24 21:41:53

回答

1

你的代碼對我來說似乎很好。 下面是你應該怎麼稱呼和測試代碼的例子:

create table user_detail 
( uid int primary key, 
    username varchar(50), 
    password varchar(20) 
    ) 
go 
insert user_detail values(1,'a','b') 
go 
create procedure getlogin(@username varchar(50),@password varchar(20),@granted int output) 
as 
begin 
    if exists (select top 1 uid 
       from user_detail 
       where username = @username and password = @password) 
     set @granted=1 
    else 
     set @granted=-1 
end 
go 
declare @granted int 
exec getlogin 'a','a', @granted output 
select @granted 
exec getlogin 'a','b', @granted output 
select @granted 

順便說一句,您可能需要使用HASHBYTES函數加密密碼。您可以在Books Online中閱讀更多內容。

相關問題