您的位置:程序门 -> ms-sql server -> 基础类



请教高手一个很简单的存储过程


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教高手一个很简单的存储过程[已结贴,结贴人:icejd]
发表于:2007-05-04 17:48:12 楼主
有一个存储过程,是插入数据,但是需要判断是否有重名,有的话需要将传进来的参数重新赋值,如:

@teachername   varchart(32)

参数@teachername=zhl
我需要先判断这个参数在库中是否存在,如果存在则在其原有基础上加一个 "2 "以区分
也就是说,如果库中存在   zhl这个名字,则重新给@teachername赋值为zhl2
然后再执行插入
小弟初学存储过程,请各位帮忙
create   procedure   teacher_add
                  @teachername   varchar(32),
                  @teacherename   varchar(32),
                  @teachergender   char(1),
                  @teacherbirthday   datetime,
                  @teachernativecity   varchar(128),
                  @teacherrprcity   varchar(128),
                  @teacherrprtype   int,
                  @teachernameused   varchar(32),
                  @teacherhealth   int,
                  @teacherpolitics   int,
                  @teacherpeoples   int,
                  @teacheridcode   varchar(32),
                  @teacherhousing   varchar(32),
                  @teacheremail   varchar(128),
                  @teachermarried   int,
                  @teachercode   varchar(64),
                  @teacherunicode   varchar(64),
                  @teacherofficialtel   varchar(32),
                  @teachersalary   int,
                  @teacheraddr   varchar(128),
                  @teacherpostcode   varchar(32),
                  @teachertelp   varchar(32),
                  @teacherfamilyincome   int,
                  @teacherrights   int,
                  @teachereducation   int,
                  @teachergraduateschool   varchar(64),
                  @teachergradedate   datetime,
                  @teacherspeciality   int,
                  @teachercertificate   int,
                  @teacherworkdate   datetime,
                  @teacherenterdate   datetime,
                  @teachertype   int,
                  @teacherattr   int,
                  @teachersign   int,
                  @teacherremark   varchar(64),
                  @teacherid   int,
                  @teacherpwd   varchar(32),
                  @teacherutype   int
               
as
insert   userinfo

id,
type,
name,
passwd,
birthday,
gender,
peoples,
nativecity,
politics,
addr,
postcode,
telp,
rprtype,
rprcity,
familyincome,
health,
email,
truename
)
values

  @teacherid,
  @teacherutype,
  @teacherename,
  @teacherpwd,
  @teacherbirthday,
  @teachergender,
  @teacherpeoples,
  @teachernativecity,
  @teacherpolitics,
  @teacheraddr,
  @teacherpostcode,
  @teachertelp,
  @teacherrprtype,
  @teacherrprcity,
  @teacherfamilyincome,
  @teacherhealth,
  @teacheremail,
  @teachername
)
发表于:2007-05-04 17:53:221楼 得分:0
存储过程可以在当中执行多条sql语句,这样想的话,就可以找到思路了吧?

试一下吧...
发表于:2007-05-04 17:53:442楼 得分:0
在insert前先判断
if   exists(select   1   from   userinfo   where   truename   =   @teachername)
set   @teachername   =   @teachername   +   '2 '
发表于:2007-05-05 16:49:193楼 得分:0
关键的问题是如果zhl2也存在又要如何弄呢
发表于:2007-05-05 17:07:074楼 得分:0
如果zhl2也存在,@teachername應該賦值為多少?
发表于:2007-05-05 17:26:595楼 得分:0
zhl4或zhl22或其它不重复的值,如果也存在,则继续,直到没有重复,呵呵
发表于:2007-05-05 18:12:106楼 得分:0
ding
发表于:2007-05-06 08:32:347楼 得分:50
可以利用@@rowcount,首先用select语句察看在数据库中有多少相同的行数,然后在@teachername后加上@@rowcount,就可以区别了。再执行插入操作。


快速检索

最新资讯
热门点击