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を取得しています

4

1 に答える 1

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 を参照してください。

于 2013-06-19T20:45:15.567 に答える