回 帖 发 新 帖 刷新版面

主题:怪异问题!!大家来看看!!

declare @ziduann char(1)
select @ziduann='1'
loopx:
select @ziduann=@ziduann+1
while @ziduann<9
print @ziduann     ——*
goto loopx

执行是死循环

declare @ziduann char(1)
select @ziduann='1'
loopx:
print @ziduann     ——*
select @ziduann=@ziduann+1
while @ziduann<9
goto loopx

就能正常运行,
只不过把*语句换了个位置而已[em18]
为什么啊?

回复列表 (共2个回复)

沙发

declare @ziduann char(1)
select @ziduann='1'
loopx:
select @ziduann=@ziduann+1
while @ziduann<9
print @ziduann     ——*
goto loopx
你上面这段话肯定是死循环啊!永远打印2 !!
这是因为 while循环的范围没有包括goto loopx ,只包括了print @ziduann ,所以永远达不到你要的效果
循环最基本的语法是写上begin  end
这样写就对了!
declare @ziduann char(1)
select @ziduann='1'
loopx:
select @ziduann=@ziduann+1
while @ziduann<9
begin
print @ziduann    
goto loopx
end

板凳

郁闷!
我以前学控制的,我们的汇编语言和单片机的语言中都有一个程序指针PC,每当执行完一条指令,PC值加一,则可看下面的程序,我的想法是执行完6后,PC值加一,就到了第七条指令执行跳转了,谁知现在高级语言居然......

declare @ziduann char(1)              1
select @ziduann='1'                   2
loopx:                                3
select @ziduann=@ziduann+1            4
while @ziduann<9                      5
print @ziduann                        6
goto loopx                            7

我来回复

您尚未登录,请登录后再回复。点此登录或注册