请高手快进来帮我看看这段T-SQL存储过程语句

来源:百度知道 编辑:UC知道 时间:2024/09/22 16:37:37
我怎么也看不出那里语法错误了!

go
create proc denglu
@name varchar(20),
@pwd varchar(20),
@res int output

as
declare @p varchar(20)
if exists(select @p=upwd from user_data where uname=@name)
begin
if(@p=@pwd)
set @res=0

else
set @res=1

end

else
set @res=2

go

错误提示:
服务器: 消息 170,级别 15,状态 1,过程 denglu,行 8
第 8 行: '=' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,过程 denglu,行 18
在关键字 'else' 附近有语法错误。
不行 还是不行!!!你们的都不行 为什么啊

if exists(select @p=upwd from user_data where uname=@name)
这句错误,不能即赋值又做判断的

改成如下语句
...
if exists(select upwd from user_data where uname=@name)
Begin
select @p=upwd from user_data where uname=@name
...

看看这样行不?
create proc denglu
(@name varchar(20),
@pwd varchar(20),
@res int output )

as
declare @p varchar(20)
if exists(select upwd from user_data where uname=@name)
begin
select @p=upwd from user_data where uname=@name
if @p=@pwd
begin
set @res=0
end
else
set @res=1
end
else
set @res=2

看看这样行吗?不行的话你自己看看SQL server的联机丛书吧!
if exists(select @p=upwd from user_data where uname=@name)
begin
if(@p=@pwd)
set @res=0
end

else
begin
set @res=1

else
begin
set @res=2
end

go