declare @cz int
set @cz=0
select @cz=count(*) from kh group by dwbh having(count(dwbh)>1)
if @cz>0 goto error0 --这里的实际结果是@cz=0,但是sql仍然给我跳转到了error0那里?怎么回事?
error0:
print 'dwbh重复'
return

解决方案 »

  1.   

    举个例子
    declare @cz int
    set @cz=0
    select @cz=0--count(*) from kh group by dwbh having(count(dwbh)>1)
    if @cz>0 goto error0 --这里的实际结果是@cz=0,但是sql仍然给我跳转到了error0那里?怎么回事?
    else goto noerrorerror0:
    print 'dwbh重复'
    noerror:
    print 'right'
    --return
      

  2.   


    --其实可以这样处理,不到万不得已,不建议用goto
    declare @cz int
    set @cz=0
    select @cz=count(*) from kh group by dwbh having(count(dwbh)>1)
    if @cz>0 print 'dwbh重复'
    return
      

  3.   

    明明有If @cz>0 为什么会顺序执行?
      

  4.   

    条件成立的时候跳转,否则执行if的下一条语句,自然就是print了.
      

  5.   

    问题是不满足if @cz>0 goto我说了此时@cz=0而不是>0,按理不应该跳转的呀?
      

  6.   

    前面说了是顺序执行了,按理是不应该跳转,但并非遇到error0: 就会停止执行,
    要么你在error0: 前加return
    要么
    declare @cz int 
    set @cz=0 
    select @cz=count(*) from A group by dwbh having(count(dwbh)>1) 
    if @cz>0 goto error0 --这里的实际结果是@cz=0,但是sql仍然给我跳转到了error0那里?怎么回事? else goto e1--加
    error0: 
    print 'dwbh重复'
    returne1:--加