drop table classname
declare @TeacherID int
declare @a char(50)
declare @b char(50)
declare @c char(50)
declare @d char(50)
declare @e char(50)
set @TeacherID=1set @a = (Select DRClass1 From Teacher Where TeacherID = @TeacherID)
set @b = (Select DRClass2 From Teacher Where TeacherID = @TeacherID)
set @c = (Select DRClass3 From Teacher Where TeacherID = @TeacherID)
set @d = (Select DRClass4 From Teacher Where TeacherID = @TeacherID)
set @d = (Select DRClass5 From Teacher Where TeacherID = @TeacherID)create table  classname(classname char(50))
insert into classname  (classname) values (@a)
if (@b<>null) 
begin
insert into classname  (classname) values (@b)  if (@c<>null)
  begin
  insert into classname  (classname) values (@c)    if (@d<>null) 
    begin
    insert into classname  (classname) values (@d)
      if (@e<>null) 
      begin
      insert into classname  (classname) values (@e)
      end
    end
  end
endselect * from classname我测试的结果是它直接把@a插入到新表里面,接下来没做任何的判断,然后就直接到了最后一句了,
select * from classname
麻烦各位大侠指导一下

解决方案 »

  1.   

    如果@b为null的话,后面的当然都不会执行啦,首先检查一下@b是否为null
      

  2.   

    另外,你的语句
    set @a = (Select DRClass1 From Teacher Where TeacherID = @TeacherID)
    set @b = (Select DRClass2 From Teacher Where TeacherID = @TeacherID)
    set @c = (Select DRClass3 From Teacher Where TeacherID = @TeacherID)
    set @d = (Select DRClass4 From Teacher Where TeacherID = @TeacherID)
    set @d = (Select DRClass5 From Teacher Where TeacherID = @TeacherID)
    不觉得繁琐?直接
    select @a=DRClass1, @b=DRClass2, @c=DRClass3, @d=DRClass4, @c=DRClass5 from Teacher Where TeacherID = @TeacherID
    不是更简单?
      

  3.   

    感谢sunjian_qi(sonne) 
    你的方法很好,我一时胡涂,复制粘贴习惯了,就set了一堆了
    另:
    @b,@c,@d,@e都不是空的
      

  4.   

    把所有的<>null改为is not nullif @b is not null
    if @c is not null
    ......
      

  5.   

    OK。问题解决,谢谢sunjian_qi(sonne) ,马上给分
    sunjian_qi(sonne) 能讲讲原因吗?
      

  6.   

    有什么原因吗?这个是SQL的语法。
      

  7.   

    呵呵,我没注意,<>号两边必须都是数字吧?null是个类型,所以不能用<>.不知道我说的对不对?
    实在不好意思,帖子结了还要问问题。
    上面那个SQL语句,怎么样写成存储过程啊?我试了一晚上都不行。