数据库PLM里面有一个表SM_User,该表有Usercode,UserName,Password三个字段!
现在要写一个存储过程是在该表添加数据,并且在存储过程里面验证Usercode不能为空,
而且Usercode不能有重复的值!

解决方案 »

  1.   

    为什么要用存储过程控制呢?直接设置Usercode为主键不就可以了吗
      

  2.   

    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
      

  3.   

    select 1 from SM_User where Usercode=@Usercode这句的那个1是什么意思?
      

  4.   

    主要是用后面的 条件  Usercode=@Usercodeselect 1 from   这是没用的,也就是说没必要去写字段什么的,当然,你要改成 
    select * from  也是可以的! 当这样的话,系统就要提取字段名 ,速度比 select 1 from 慢。
    而在这里,只要得到一个判断的结果,not exists,所以字段就不用写上了!