create table SM_User(Usercode varchar(10),UserName varchar(10),[Password] varchar(10)) gocreate proc [insert] @Usercode varchar(10), @UserName varchar(10), @Password varchar(10) asif(@Usercode is not NULL) begin if not exists(select 1 from SM_User where Usercode=@Usercode) begin insert into SM_User values(@Usercode,@UserName,@Password) end else begin raiserror('已经存在该Usercode的记录!',16,1) end end else begin raiserror('Usercode不能为NULL!',16,1) end goexec [insert] '1','aa','aaaaa' goexec [insert] '1','aaaaa','aaaaaaaaa' go drop proc [insert] drop table SM_User
select 1 from SM_User where Usercode=@Usercode这句的那个1是什么意思?
主要是用后面的 条件 Usercode=@Usercodeselect 1 from 这是没用的,也就是说没必要去写字段什么的,当然,你要改成 select * from 也是可以的! 当这样的话,系统就要提取字段名 ,速度比 select 1 from 慢。 而在这里,只要得到一个判断的结果,not exists,所以字段就不用写上了!
gocreate proc [insert]
@Usercode varchar(10),
@UserName varchar(10),
@Password varchar(10)
asif(@Usercode is not NULL)
begin
if not exists(select 1 from SM_User where Usercode=@Usercode)
begin
insert into SM_User values(@Usercode,@UserName,@Password)
end
else
begin
raiserror('已经存在该Usercode的记录!',16,1)
end
end
else
begin
raiserror('Usercode不能为NULL!',16,1)
end
goexec [insert] '1','aa','aaaaa'
goexec [insert] '1','aaaaa','aaaaaaaaa'
go
drop proc [insert]
drop table SM_User
select * from 也是可以的! 当这样的话,系统就要提取字段名 ,速度比 select 1 from 慢。
而在这里,只要得到一个判断的结果,not exists,所以字段就不用写上了!