Professional Documents
Culture Documents
INTRODUCCION A LA PROGRAMACIN
Variables locales
Una variable es un objeto que puede tomar un valor. Se pueden utilizar
variables locales para introducir datos en una sentencia SQL. En T-SQL, se
pueden crear variables locales para uso temporal, mientras se ejecutan un
bloque de sentencias SQL. Una vez la variable es declarada, Una sentencia SQL
puede establecer un valor para la variable. La siguiente sentencia en el bloque
puede recuperar el valor de la variable, y mostrar el resultado.
El nombre de una variable local debe tener como prefijo el smbolo @.
Sintaxis:
DECLARE @nombre_variable DATA_TYPE
Por ejemplo para declarar una variable que contendr 4 caracteres, el comando
podra ser como sigue:
DECLARE @area Char(4)
Se puede utilizar la sentencia SET, o la sentencia SELECT para asignar un valor
a una variable declarada.
Sintaxis:
SET @nombre_variable = valor
value
Ej:
SELECT
@nombre_variable
BEGIN END:
RETURN:
GOTO:
WHILE:
IF ELSE:
Sintaxis:
BEGIN
{
sentencia | bloque de sentencias
}
Sintaxis:
RETURN [expresin entera]
La expresin entera especifica un valor
entero que se retorna. Por defecto,
todos los procedimientos almacenados
del sistema retornan un zero o nonzero para indicar que la ejecucin fue
exitosa o no.
Sintaxis:
GOTO etiqueta
El nombre de la etiqueta debe seguir
las reglas de los nombres de
identificadores.
procedimientos
almacenados del sistema retornan un
zero o non-zero para indicar que la
ejecucin fue exitosa o no.
Sintaxis:
WHILE condicin
{ Sentencias | bloque de sentencias}
[BREAK]
{ Sentencias | bloque de sentencias}
[CONTINUE]
break: rompe el ciclo
inmediatamente externo.
Continue: Reinicia el loop.
al
bloque
Sintaxis:
IF condicin
{ Sentencias | bloque de sentencias}
ELSE
{ Sentencias | bloque de sentencias}
Sintaxis:
CASE
WHEN condicin THEN expresiones
[
WHEN
condicin2
THEN
expresiones]
[ ELSE]]
END
Sintaxis:
WAITFOR {
tiempo
SET @VAR =0
EJEMPLO 2 : --USO DE IF
Usando Northwind
DECLARE @numclie int
set @numclie = ( select count (*)
from customers
where companyname like '%k%')
IF @numclie = 0
PRINT 'No hay registros para esta consulta'
ELSE
PRINT 'Existen ' + cast(@numclie as char(2))+'
clientes con este criterio'
Usando PUBS
1.
Select title_id,title, CASE
WHEN type = 'business' THEN 'NEGOCIOS'
WHEN type = 'mod_cook' OR type = 'trad_cook'
THEN 'COCINA'
WHEN type LIKE '%popular%' THEN 'COMPUTADORES'
WHEN type = 'psychology' THEN 'SICOLOGIA'
END
AS 'TEMATICA'
FROM titles
--*******************************
2.
SELECT stor_id,ord_num, 'forma de pago' =
CASE
when payterms = 'Net 30' THEN 'PAGO A 30 DIAS'
when payterms = 'Net 60' THEN 'PAGO A 60 DIAS'
when payterms = 'ON invoice' THEN 'PAGO CONTRA ENTREGA'
end
from Sales
--*************otra forma de usarlo*********************
3.
SELECT stor_id,ord_num, 'forma de pago' =
CASE payterms
when 'Net 30' THEN 'PAGO A 30 DIAS'
when 'Net 60' THEN 'PAGO A 60 DIAS'
when 'ON invoice' THEN 'PAGO CONTRA ENTREGA'
Ing. Yaqueline Chavarro
end
from Sales
EJEMPLO 4 --USO DE WAITFOR
grrr'
WAITFOR
TIME '11:35'
2. Ahora asignar una restriccin al campo Royalty para que no acepte valores
superiores a 24 en la comisin
alter table titulosCopia
add Constraint valcomision check (royalty <=24)
3. El procedimiento actualiza permite que se pueda cambiar el porcentaje de
comisin para el libro especificado por cdigo.
CREATE PROCEDURE ACTUALIZA
@codlibro tid, --PARAMETROS
@comision int
AS
UPDATE titulosCopia SET royalty = @comision
WHERE title_id = @codlibro
RETURN --establece fin de procedimiento y devuelve
--un valor que determina si la ejecucin fue o no
--exitosa
4. Visualizar la tabla para conocer su informacin y posteriormente ejecutar el
procedimiento para comprobar, se le introduce un cdigo de libro y un
porcentaje diferente al inicial, la variable @VAR recoge el valor devuelto por el
procedimiento que sera 0 si no hay errores.
-- *********************************
SELECT * FROM titulosCopia
--******************************
DECLARE @VAR INT
EXEC @VAR = ACTUALIZA pc8888,30
IF @VAR <> 0 PRINT 'error en la actualizacin...'
ELSE
PRINT 'ACTUALIZACIN EXITOSA'
EJEMPLO 6 : --manejo de procedimientos almacenados
from Orders
where ShipCity LIKE RTRIM(@ciudad)
set @numfilas= @@rowcount
--RETORNA EL NUMERO DE FILAS
DEVUELTAS
2. El procedimiento se puede ejecutar declarando una variable que almacene el
numero devuelto:
DECLARE @nueVar int
EXEC ListaOrdenesCiudad 'C%' ,@nueVar OUTPUT
3. El resultado quedo almacenado y se puede usar ese valor
select 'El nmero de rdenes a esa ciudad es', @nueVar
4. Tambin se puede ejecutar el procedimiento identificando explicitamente los
parmetros ciudad y numfilas:
DECLARE @Numfilas int
EXEC ListaOrdenesCiudad @numfilas =0 , @ciudad='M%'
select 'El nmero de rdenes a esa ciudad es', @numfilas
Use master
Declare @datos int
EXEC @datos = xp_cmdshell
' dir *.exe'
If (@datos = 0)
PRINT 'Comando ejecutado con xito'
ELSE
PRINT 'Fallo al ejecutar el comando'
Qu hace el siguiente grupo se sentencias?____________
Use master
Declare @cmd sysname, @var sysname
Set @var = 'dir /p'
Set @cmd = 'echo' + @var + '> dir_salida.txt'
Investigue otros procedimientos extendidos.