存储过程找bug(一)

linghuchonglzq2000 2003-03-19 10:55:58
CREATE PROCEDURE UserCheck
@userName VARCHAR(10)=NULL,
@userPWD VARCHAR(10)=NULL,
@userId INTEGER OUTPUT
AS
BEGIN

SET NOCOUNT ON

DECLARE
@theUserPWD VARCHAR(10),
@ErrorMsg VARCHAR(400)
SET @userId=0

SELECT @userId=tu.userId,@theUserPWD=tu.userPWD FROM dbo.tblUSER tu
WHERE (tu.userName=@userName)

IF @userId=0
BEGIN
SET @ErrorMsg= '**您输入的的登录用户名在数据库中不存在,请查证后重试**'+CHAR(13)+CHAR(10)+'**如有疑问,请参照用户手册或者与管理员联系**'
RAISERROR(@ErrorMsg,16,1)
RETURN @userId
END

IF @theUserPWD<>@userPWD
BEGIN
SET @ErrorMsg= '**您输入的的登录用户密码错误,请注意字母大小写**'+CHAR(13)+CHAR(10)+'**如有疑问,请参照用户手册或者与管理员联系**'
RAISERROR(@ErrorMsg,16,1)
RETURN @userId
END

UPDATE dbo.tblUSER
SET
userLastTime=GETDATE()
WHERE userId=@userId

RETURN @userId

SET NOCOUNT OFF
END
GO
...全文
39 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHANGWEI15 2003-03-19
  • 打赏
  • 举报
回复
possible becasue of
"UPDATE dbo.tblUSER
SET
userLastTime=GETDATE()
WHERE userId=@userId"
newdongkui 2003-03-19
  • 打赏
  • 举报
回复
语法上大概没问题,逻辑上有点问题。
建议给你@userId加个默认值0,或者直接赋值0。


lizongqi 2003-03-19
  • 打赏
  • 举报
回复
考,解决了:)

原来不是存储器的问题
lizongqi 2003-03-19
  • 打赏
  • 举报
回复
好像是 UPDATE语句的影响结果

RAISERROR后,就应该返回呀
linghuchonglzq2000 2003-03-19
  • 打赏
  • 举报
回复
上面这个存储过程,已经设了 SET NOCOUNT ON
执行都会出现"(所影响的行数为 1 行)"

不知为何,高手指点

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧