日期:2014-05-17  浏览次数:20457 次

关于GOTO 的用法,求详解
DECLARE @Count int;
SET @Count=1;
WHILE @Count < 10
BEGIN
PRINT @Count;
SET @Count = @Count + 1
IF @Count = 4 GOTO Branch_ONE
IF @Count = 5 GOTO Branch_Two
END
Branch_ONE:
PRINT 'Jumping To Branch One'
GOTO Branch_Three;
Branch_TWO:
PRINT 'Jumping To Branch Two'
Branch_THREE:
PRINT 'Jumping To Branch Three'

------解决方案--------------------
将执行流更改到标签处。  跳过 GOTO 后面的 Transact-SQL 语句,并从标签位置继续处理。 GOTO 语句和标签可在过程、批处理或语句块中的任何位置使用。 GOTO 语句可嵌套使用。


IF @Count = 4 GOTO Branch_ONE 当@Count = 4 执行
Branch_ONE:
    PRINT 'Jumping To Branch One'
    GOTO Branch_Three;

然后再跳到Branch_Three执行。

不过不建议在SQL中这样跳来跳去。
------解决方案--------------------
建议少用GOTO语句
------解决方案--------------------
引用:
Quote: 引用:

将执行流更改到标签处。  跳过 GOTO 后面的 Transact-SQL 语句,并从标签位置继续处理。 GOTO 语句和标签可在过程、批处理或语句块中的任何位置使用。 GOTO 语句可嵌套使用。


IF @Count = 4 GOTO Branch_ONE 当@Count = 4 执行
Branch_ONE:
    PRINT 'Jumping To Branch One'
    GOTO Branch_Three;

然后再跳到Branch_Three执行。

不过不建议在SQL中这样跳来跳去。
好的,以后尽量不使用GOTO,现在是新手上路,正在学习。执行完GOTO,是不是就不执行WHILE 循环了?

在执行到3之后就跳出WHILE循环了
------解决方案--------------------
GOTO 最合理的使用建议类似于程序开发时抛出异常一样, 譬如定义一个error标签,只要有错误就goto到error标签。