检查表中是否存在数据如果是,则执行此操作(数据确实存在),但只有部分正在运行

时间:2013-02-24 21:34:14

标签: sql-server

我有一张带有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

1 个答案:

答案 0 :(得分: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

BTW您可能希望使用HASHBYTES功能加密密码。您可以在联机丛书中阅读更多相关信息。