A partir de SQL Server 2008 existe la instrucción GOTO que altera el flujo de ejecución y lo dirige a una área de código marcada por una etiqueta. Las instrucciones Transact-SQL que siguen a una instrucción GOTO se pasan por alto y el procesamiento continúa en el punto que marca la etiqueta. Las instrucciones GOTO y las etiquetas se pueden utilizar en cualquier punto de un procedimiento, lote o bloque de instrucciones. Las instrucciones GOTO se pueden anidar.
Para nuestro ejemplo de uso del GOTO usemos el siguiente script:
DECLARE @Contador int;
SET @Contador = 1;
WHILE @Contador < 10
BEGIN
SELECT @Contador
IF @Contador = 4 GOTO Opcion_Uno --Jumps to the first branch.
IF @Contador = 5 GOTO Opcion_Dos--This will never execute.
SET @Contador = @Contador + 1
END
Opcion_Uno:
SELECT 'Eligio opción uno.'
GOTO Salida; --Esto evitará que las opciones se ejecuten una despues de la otra
Opcion_Dos:
SELECT 'Eligio opción dos.'
GOTO Salida; --Esto evitará que las opciones se ejecuten una despues de la otra
Opcion_Tres:
SELECT 'Eligio opción tres.';
GOTO Salida; --Esto evitará que las opciones se ejecuten una despues de la otra
Salida:
SELECT 'Adios';
Vemos ahora como funciona en la siguiente imágen: