if(@bs=1) --查看入库统计begin
if( @zt='zz')
if(@banhao='')
select * from t1 a
  where  a.状态='在制' else
select * from t2 a
  where  a.状态='发版' and a.dd like '%'+@ddd+'%' 

end 
当@bs=1,@zt='zz',bahao=''的时候执行代码select * from t1 a
  where  a.状态='在制' 可当@bs=1,@zt='zz',bahao=!''的时候select * from t2 a
  where  a.状态='发版'  and a.dd like '%'+@ddd+'%' 这段代码怎么执行不起来呢

解决方案 »

  1.   

    因为你的@bs=1,最外边的那个else进不去,所以不执行!
      

  2.   

    declare @bs int,@zt varchar(10),@banhao varchar(10)
    select @bs=1,@zt='zz',@banhao='a'if(@bs=1) --查看入库统计
    begin
    if( @zt='zz')
    begin
    if(@banhao='')
    begin

      select 'a'
    end
    else
    begin

    select 'b'
    end
    end

    end  
      

  3.   

     代码应该没问题,也许是你的查询条件,你可以跟踪一下:
      else
       select * from t2 a
         where a.状态='发版' and a.dd like '%'+@ddd+'%' 
      print 'test-else'
    end 
      
      

  4.   

    看看有没有空之类的,还有进入@zt那个if 没
      

  5.   

    IF ( @bs = 1 ) --查看入库统计
    BEGIN
        IF ( @zt = 'zz' ) 
        BEGIN  --如果不加BEGIN...END,IF条件只针对紧挨着它的一条SQL语句
            IF ( @banhao = '' ) 
                SELECT * FROM t1 a WHERE a.状态 = '在制'  --SQL1        ELSE 
                SELECT * FROM t2 a WHERE a.状态 = '发版' AND a.dd LIKE '%' + @ddd + '%'  --SQL2
         END
    END  
      

  6.   

    测试过,应该没问题哦.仅供参考
    IF (1 = 1) --看来不加BEGIN...END也可以,这个IF会把下面的IF...ELSE当成一个SQL语句
    IF (1 = 2) 
    SELECT '2=2'
    ELSE
    SELECT '?=?' --这句会被输出
    ELSE
    SELECT '1=1'
      

  7.   

    @banhao nvarchar(50) 变量是这定义的,当我传值为空或1的时候后面自动就加了空格,怎么使传值时不自动加空格呢
    传1时自动加空格在后面:@banhao = '1                                                 '
     传空格时也是自动加空格:@banhao = '                                                  '
      

  8.   


    declare @banhao nvarchar(50)
    set @banhao='1'
    select @banhao
    '1'
    declare @banhao1 nchar(50)
    set @banhao1='1'
    select @banhao1
    '1                                                 'nvarchar没有空格,nchar才有...
      

  9.   

    最好在代码块里面加上begin .. end