sentencias de control para SQL Sever

Sentencia WHILE.- permite la ejecución de una o varias instrucciones.

SINTAXIS
WHILE Boolean_expression
{ sql_statement | statement_block | BREAK }

EJEMPLO

DECLARE
V_NUM NUMBER := 1;

BEGIN

WHILE V_NUM <= 13 LOOP

DBMS_OUTPUT.PUT_LINE('El valor V_NUM es :' || V_NUM);

V_NUM := V_NUM + 2.1;
END LOOP;

END;

Sentencia GOTO.- nos permite desviar el flujo de ejecución hacia una etiqueta.
Fue muy utilizada en versiones anteriores de SQL SERVER

SINTAXIS

Define the label:
label:

Alter the execution:
GOTO label

DECLARE @Counter int;
SET @Counter = 1;
WHILE @Counter < 10

BEGIN
SELECT @Counter
SET @Counter = @Counter + 1
IF @Counter = 4 GOTO Branch_One --Jumps to the first branch.
IF @Counter = 5 GOTO Branch_Two --This will never execute.
END
Branch_One:
SELECT 'Jumping To Branch One.'
GOTO Branch_Three; --This will prevent Branch_Two from executing.
Branch_Two:
SELECT 'Jumping To Branch Two.'
Branch_Three:
SELECT 'Jumping To Branch Three.';

Estructura condicional IF.- permite
la ejecución de una o varias líneas
de código según la condición.

SINTAXIS
IF condicion
{
sentenca_sql | bloque_sql}
[ELSE
{sentencia_sql | bloque_sql}]

DECLARE
/*Para poder ver la utilidad de éste script
basta con cambiar los valores de las variables

V_A y V_B según queramos. */
V_A NUMBER := 30;
V_B NUMBER := 30;

BEGIN

/*En caso de que la variable V_A sea mayor
se mostrará un mensaje*/

IF V_A > V_B THEN
dbms_output.put_line('V_A es mayor');
ELSE

dbms_output.put_line('V_B es mayor o igual que V_A');
END IF;
END;

La sentencia CASE.- permite
evaluar diferentes opciones,
por cada opción se realiza una
instrucción específica.

SINTAXIS
CASE [input_expression]
WHEN [eval_expression] THEN [output_expression]


ELSE [output_expression]
END

Ejemplos:

DECLARE @variable int = 5;

SELECT [simple] = CASE @variable
WHEN 1 THEN ‘One’
WHEN 5 THEN ‘Five’
ELSE ‘Some other number’
END;