注册 登录
编程论坛 SQL Server论坛

[求助]请教一个关于存储过程的小问题

ymaozi 发布于 2007-07-24 10:33, 906 次点击

CREATE PROCEDURE P_REGIE
@userName varchar(50),
@password varchar(50)
AS
DECLARE @message varchar(100),
@ov int
set @message=''
set @ov=-1
SET NOCOUNT ON
SELECT @ov=-1 from H_MEMBER WHERE LOGINNAME=RTRIM(LTRIM(@userName))
IF @@ROWCOUNT<=0
BEGIN
INSERT INTO H_MEMBER(LOGINNAME,PASSWORD) VALUES(@userName,@password)
SET @message='注册成功!'
SET @ov=0
END
ELSE
BEGIN
SET @message='已经存在相同的用户名!'
SET @ov=100
END
IF @@ERROR <> 0
BEGIN
SET @message='写入数据错误!'
SET @ov=-1
END
SELECT @message as Message,@ov as outputValue

GO


我刚开始学存储过程,所以还有很多的东西不明白!有一个小问题想一下下!

SELECT @ov=-1 from H_MEMBER WHERE LOGINNAME=RTRIM(LTRIM(@userName))

SELECT 后面跟@ov=-1是什么意思呀? 去了就不行了!

6 回复
#2
lzalibabalr2007-08-02 13:37
SELECT @ov=-1 from H_MEMBER WHERE LOGINNAME=RTRIM(LTRIM(@userName))
就是付值的意思. 在表loginname里有@usename这个用户的话,就把 -1付值给@ov
#3
ymaozi2007-08-03 13:00

赋值,我当然知道,只是不知道这句话的用意,去了就不能运行了!

#4
lzalibabalr2007-08-04 00:31
SELECT @ov=-1 from H_MEMBER WHERE LOGINNAME=RTRIM(LTRIM(@userName))

这句就是检查这个@username是否已经注册过了,去掉@ov=-1就变成
SELECT from H_MEMBER WHERE LOGINNAME=RTRIM(LTRIM(@userName))当然错了,语法都不对.
#5
西风独自凉2007-08-04 09:39

去掉也可以
把它换成*不就得了
#6
ymaozi2007-08-08 09:50

试过!

答案待找!

#7
Kendy1234562007-08-08 10:29
set @ov=-1
SET NOCOUNT ON
SELECT @ov=-1 from H_MEMBER WHERE LOGINNAME=RTRIM(LTRIM(@userName))
IF @@ROWCOUNT<=0
BEGIN
INSERT INTO H_MEMBER(LOGINNAME,PASSWORD) VALUES(@userName,@password)
SET @message='注册成功!'
SET @ov=0
END

这一句赋值对于@ov来说是没有意义的 无论username是否存在 @ov的值都是-1
这行代码影响的是系统变量 @@rowcount 所以说用select * from 效果是没有分别的
1