当前位置:  开发笔记 > 编程语言 > 正文

使用变量标签的SQL GOTO语句

如何解决《使用变量标签的SQLGOTO语句》经验,为你挑选了1个好方法。

我希望能够做到这样的事情:

declare @label varchar
set @label = 'label_1'
goto @label

label_1:

label_2:

当然,sql server给了我一个不正确的语法错误...所以我想知道我是否仍然可以用略有不同的语法来做到这一点?



1> Dan Pichelma..:

我已经编写了一个可能对其他人有用的功能性黑客.在SQL Server 2008上,您无法动态构建goto,也无法在变量中提供标签.旧学校黑客是加载变量,跳转到单个点然后使用if语句来确定真实目的地.

GOTO当然被认为是有害的,通常是一个坏主意.

l1:
    print '1'
l2:
    print '2'
    goto l4
l3:
    print '3'   -- should not print
l4:
    print '4'
    declare @lbl nvarchar(5)
    set @lbl = N'l6'
    goto vjump
    --  goto @lbl   -- doesn't work
    --  exec('goto ' + @lbl) -- doesn't work
l5:
    print '5'
l6:
    print '6'
l7:
    print '7'
    return
vjump:
    if @lbl = 'l1'
        goto l1
    if @lbl = 'l2'
        goto l2
    if @lbl = 'l3'
        goto l3
    if @lbl = 'l6'
        goto l6

这产生了

1
2
4
6
7

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有