--楼主给的存储过程错误好多...不止是程序上,连字段上也有错误...
--修改了一下
--建表
create table admin(userName varchar(30),
Password varchar(30),
LoginIP varchar(30),
ID varchar(30),
loginnum int default 0,
logindate datetime)insert into admin values ('me','me','','1',0,getdate())Create Procedure up_CheckPass
@CHKName varchar(30),
@CHKPass varchar(30),
@CHKIP varchar(30),
@CHKID varchar(30),
@result bit output --返回为1表示成功,返回为0表示失败
AS
set @result=0
begin
If not Exists(Select UserName From Admin Where UserName=@CHKName)
returnIf not Exists(Select PassWord From Admin Where PassWord=@CHKPass)
return
Update Admin Set LoginDate=getdate() ,LoginIP=@CHKIP,LoginNum=LoginNum+1 Where ID=@CHKID
if @@error=0
set @result=1End--测试成功
declare @result bit
exec up_CheckPass 'me', 'me', '10.10.12.12', '1', @result output
select @result
select * from admin
结果
me me 10.10.12.12 1 4 2004-10-16 19:12:34.747--测试失败
declare @result bit
exec up_CheckPass 'me', 'm', '10.10.12.12', '1', @result output
select @result
select * from admin
--修改了一下
--建表
create table admin(userName varchar(30),
Password varchar(30),
LoginIP varchar(30),
ID varchar(30),
loginnum int default 0,
logindate datetime)insert into admin values ('me','me','','1',0,getdate())Create Procedure up_CheckPass
@CHKName varchar(30),
@CHKPass varchar(30),
@CHKIP varchar(30),
@CHKID varchar(30),
@result bit output --返回为1表示成功,返回为0表示失败
AS
set @result=0
begin
If not Exists(Select UserName From Admin Where UserName=@CHKName)
returnIf not Exists(Select PassWord From Admin Where PassWord=@CHKPass)
return
Update Admin Set LoginDate=getdate() ,LoginIP=@CHKIP,LoginNum=LoginNum+1 Where ID=@CHKID
if @@error=0
set @result=1End--测试成功
declare @result bit
exec up_CheckPass 'me', 'me', '10.10.12.12', '1', @result output
select @result
select * from admin
结果
me me 10.10.12.12 1 4 2004-10-16 19:12:34.747--测试失败
declare @result bit
exec up_CheckPass 'me', 'm', '10.10.12.12', '1', @result output
select @result
select * from admin
那应该在程序里面(asp啊什么的)进行判断比较好吧,感觉上和数据库没有关系了,毕竟你不需要附加码的数据.
另外,这个存储过程还有待优化,比如要报告错误,究竟是用户名不存在还是密码不对,用raiseerror报一下才好