SQL 登录存储过程问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 19:53:31
CREATE proc my_proc_UserLogin
@UserName varchar(50),@UserPass varchar(50),@MemberID int output
as
declare @ErrorNum int
set @ErrorNum=0
if exists(select * from tb_Member where Name=@UserName and Password=@UserPass)
begin
select MemberID from tb_Member where Name=@UserName and Password=@UserPass
end
else
begin
return @ErrorNum
end

这样写,当给出正确的用户名和密码,就能输出ID,
如果用户或密码不正确的话,什么也不返回,为什么?怎么不返回我设定的@ErrorNum呢?

问题大了,如果你想取出用户ID号,过程里面根本没有给@MemberID 赋值,你所说的有返回不返回,只是里面SELECT 语句的作用,根本没有意义,若要输出ID需改写成:
Create proc my_proc_UserLogin @UserName varchar(50),@UserPass varchar(50),@MemberID int output
as
begin
declare @ErrorNum int
set @ErrorNum=0
if exists(select * from tb_Member where Name=@UserName and Password=@UserPass)
begin
select @MemberID = MemberID from tb_Member where Name=@UserName and Password=@UserPass
end
else
begin
select @MemberID = 0
end

Return 0
end

这样执行
declare @id int
exec my_proc_UserLogin '1','1',@id output

select @id
才是得到的输出ID值

CREATE proc my_proc_UserLogin
@UserName varchar(50),@UserPass varchar(50),@MemberID int output
as
declare @ErrorNum int
set @ErrorNum=0
if exists(select * from tb_Member where Name=@UserName and Password=@UserPass)
begin
select @ErrorNum=MemberID from tb