存储过程上遇到小问题?(SQL高手快进了)(10分)

  • 主题发起人 主题发起人 hurryman
  • 开始时间 开始时间
H

hurryman

Unregistered / Unconfirmed
GUEST, unregistred user!
这个检查语句如何捕捉到?
create PROCEDURE adduser2
(@name varchar(10) ,
@sex char(4),
@retmsg varchar(20) output
)
AS
/*检查是否输入重复(这里假设没有重名)*/
if @name in (select name from us where name=@name)
begin
select @retmsg='该职工以存在了'
return 0
end
begin tran
insert into us (name,sex) values (@name ,@sex)
commit tran
select @retmsg='该职工资料添加成功'
GO
但是在客户端我连续输入同样的用户名的记录,它都执行insert语句,也就是说它根本
没有执行if @name in (select name from us where name=@name)这个判断,
大家可以帮我修该一下这个存储过程,实现当我输入重复姓名是提示‘该职工以存在了!
 
改为:
if exists(select name from us where name=@name)
begin
select @retmsg='该职工以存在了'
return 0
end

还有啊,下面那句不用加个trans吧,浪费
 
用Primary Key 不更好些吗?
 
-- if @name in (select name from us where name=@name) --
这个不能查出来吧?
用 select @iCount=count(name) from us where name = @name
再判断@iCount > 0
另,你的 begin tran commit tran 没有rockback,有何意义?
 
多人接受答案了。
 
后退
顶部