Anda di halaman 1dari 4

Palabras reservadas para el control de flujo

Begin … End
Las palabras clave de Begin and End encierran una serie de declaraciones para que sean
tratado como una unidad por construcciones de control de flujo similar al if ... else. Una serie
de declaraciones incluidas en begin y end se llaman bloque de instrucción.
Su sntaxis es la siguiente
begin
statement block
end
ejemplo:
if (select avg(price) from titles) < $15
begin
update titles
set price = price * 2
select title, price
from titles
where price > $28
end

Sin begin y end, la condición if se aplica solo a la primera declaración. La segunda


instrucción se ejecuta independientemente de la primera. Estas sentencias (begin ... end)
se pueden anidar dentro de otros begin ... end.

If … else
La palabra reservada if, con o sin su acompañante else, introduce una condición que
determina si se ejecuta la siguiente declaración. En el Transact-SQL la sentencia se ejecuta
si la condición se cumple, es decir, si devuelve TRUE. La palabra reservada else introduce
una instrucción Transact-SQL alternativa que se ejecuta cuando la condición if devuelve
FALSE.
Su sintaxis
If
boolean_expression
statement

[else

[if boolean_expression] statement ]


Ejemplo:
if (select max(id) from sysobjects) < 50
print "There are no user-created objects in this
database."
else

Juan Luis Julio César Grupo: 03


12 – Abril – 2018 Base de Datos
select name, type, id from sysobjects
where id > 50 and type = "U"
Aquí hay un ejemplo, usando tanto if como else

While, break y continue


While establece una condición para la ejecución repetida de una declaración o declaración
de bloque. Las instrucciones se ejecutan repetidamente siempre que la condición
especificada sea verdadera.
Sintaxis: while boolean_expression
statement
En este ejemplo, las instrucciones de selección y actualización se repiten, siempre que el
precio promedio sigue siendo menos de $ 30:
while (select avg(price) from titles) < $30
begin
select title_id, price
from titles
where price > $20
update titles
set price = price * 2
end
Break y continue controlan la operación de las instrucciones dentro de un ciclo while. Break
provoca una salida del ciclo while. Cualquier declaración que aparece después del se
ejecuta la palabra clave final que marca el final del ciclo. Continue provoca el reinicio del
ciclo whiler, omitiendo cualquier instrucción después de continuar, pero dentro del ciclo.
Break y continue a menudo se activan con una prueba if.
Sintaxis: while boolean expression
Begin
Statement, [statement]... break
[statement]... continue
[statement]...
end
A continuación, un ejemplo usando While, Break y Continue
while (select avg(price) from titles) > $20
begin
update titles
set price = price / 2
if (select max(price) from titles) < $40
break
else
if (select avg(price) from titles) < $20
continue
print "Average price still over $20"
end
select title_id, price from titles

Juan Luis Julio César Grupo: 03


12 – Abril – 2018 Base de Datos
where price > $20
print "Not Too Expensive"
Goto
La palabra reservada goto causa una bifurcación incondicional a una etiqueta definida por
el usuario. goto y sus etiquetas se pueden usar en procedimientos almacenados y lotes.
Sintaxis: label:
goto label
Aquí hay un ejemplo que usa goto y una etiqueta, un ciclo while y una variable local como
contador:
declare @count smallint
select @count = 1
restart:
print "yes"
select @count = @count + 1
while @count <=4
goto restart
goto generalmente depende de un while o if o alguna otra condición, para evitar un ciclo
sin fin entre goto y la etiqueta.

return
La palabra reservada return sale de un lote o procedimiento incondicionalmente. Puede ser
utilizado en cualquier punto de un lote o un procedimiento. Cuando se usa en
procedimientos almacenados, return puede aceptar un argumento opcional para devolver
un estado a la persona que llama. Las declaraciones después de la devolución no se
ejecutan.
Sintaxis: return [int_expression]
Ejemplo
create procedure findrules @nm varchar(30) = null as
if @nm is null
begin
print "You must give a user name"
return
end
else
begin
select sysobjects.name, sysobjects.id,
sysobjects.uid
from sysobjects, master..syslogins
where master..syslogins.name = @nm
and sysobjects.uid = master..syslogins.suid
and sysobjects.type = "R"
end
La palabra reservada print, utilizada en el ejemplo anterior, muestra un usuario definido
mensaje o el contenido de una variable local en la pantalla del usuario. El local variable

Juan Luis Julio César Grupo: 03


12 – Abril – 2018 Base de Datos
debe declararse dentro del mismo lote o procedimiento en el que se encuentra usado. El
mensaje en sí puede tener hasta 255 bytes de longitud.
Sintaxis: print {format_string | @local_variable | @@global_variable} [,arg_list]

Raiserror
raiserror muestra un error definido por el usuario o un mensaje de variable local en la
pantalla del usuario y establece una bandera del sistema para registrar el hecho de que se
ha producido un error. Al igual que con la print, la variable local debe declararse dentro del
mismo lote o procedimiento en el que se usa. El mensaje puede tener hasta 255 caracteres
de largo.
Sintaxis: raiserror error_number
[{format_string | @local_variable}] [, arg_list]
[extended_value = extended_value [{,
extended_value = extended_value}...]]
waitfor
La palabra reservada waitfor especifica una hora del día, un intervalo de tiempo o un evento
en el cual la ejecución de un bloque de instrucciones, procedimiento almacenado o
transacción es que se produzca.
Sintaxis: waitfor {delay "time" | time "time" | errorexit | processexit | mirrorexit}

Slash-asterisk style comments


El comentario de estilo /* es una extensión de Transact-SQL. Los comentarios de múltiples
líneas son aceptables, siempre y cuando cada comentario comience con "/ *" y termine con
"*/". Todo entre "/*" y "*/" se trata como parte del comentario.
Los slash-astediscos de la forma “/*” permiten anidar. Una convención estilística
utilizada a menudo para comentarios de líneas múltiples es comenzar la primera línea con
"/*" y líneas subsiguientes con "**". El comentario termina con "*/" como siempre:

Juan Luis Julio César Grupo: 03


12 – Abril – 2018 Base de Datos

Anda mungkin juga menyukai