Está en la página 1de 5

variables locales al procedimiento para declarar variables se emplea la palabra reservadaDECLARE @nombrevariabletipodato Y DECLARE @TOTAL NUMERICO(10,2) DECLARE @CANTIDAD

DECLARE @FECHA DATE

SIGNAR VARIABLES A LAS VARIABLES SET @TOTAL = 10 SET @CANTIDAD =@CANTIDAD+1

ESTRUCTURA CONDICIONAL IF CONDICION BEGIN -END ELSE BEGIN END

SE PUEDEN ANIDAR

IF CONDICION BEGIN IF CONDICION BEGIN END END BUCLES PARA TAREAS REPETITIVAS SE EMPLEA LA ESTRUCTURA WHILE SINTAXIS WHILE EXPRESIONLOGICA BEGIN END EJ DECLARE @I INT DECLARE @N INT SET @I=1 SET@N=10 WHILE @I<=@N BEGIN PRINT@I SET@I=@I+1 END

CURSORES UN CURSOR EN SQL SERVER , ES COMO UNA TABLA TEMPORAL QUE ALMACENA DATOS RESULTANTES DE UNA CONSULTA

DECLARACION DE CURSORES

SINTAXIS DECLARE NOMBRECURSOR SCROLL OPCIONAL FOR SENTENCIA SGL CURSOR

SCROLL: PERMITE HACER OPERACIONES NEXT,PRIOR,FIRST,LAST SI ME SE EMPLEA SCROLL SOLO PODEMOS AVANZAR CON NEXT PARA ABRIR UN CURSOR OPEN NOMBRECURSOR PARA RECORRER UN CURSOR FETCH {NEXT,PRIOR ,FIRST ,LAST} FROM NOMBRECURSOR CERRAR EL CURSOR CLOSE nombrecursor LEBERAR EL CURSOR DEALLOCATE nombrecursor PARA RECORRER UN CURSOR EN UN BUCLE WHILE EMPLEAMOS LA VARIABLE DE SISTEMAS @@FETCH_STATUS EL CUAL TIENE EL VALOR CERO SI NO SE HA LLEGADO EL FINAL DEL CURSOR

WHILE @@FETCH_STATUS=0 BEGIN FETCH NEXT FROM nombrecursor END

El club recreativo, permitira acumular 1 punto por cada 3 las de venta de servicios , las cuales se deben almacenar para dar premios al cliente cuando tenga una cantidad X de puntos Crear un proc almacenamiento que verifiquen las ventas de una fecha y registro los puntos de los clientes en la tabla puntos

createproceduresp_mostrarnumeros @nint as declare@iint set@i=1 while@i<=@n begin print@i set@i=@i+1 end

createtable puntos( idcliente int notnull, totalpuntos decimal(8,2) primarykey(idcliente) ) go

Create view vis_VentasServision as select venta.*from venta inner join VentaServicio on venta.idCliente=VentaServicio.idVentaServicio go create procedure sp_actualizarPuntosClientes @fechaVenta date as declare @idcliente int declare @totalPuntosDia decimal(8,2) declare cur_totalesxCliente cursorfor select vis_VentasServision.idCliente,SUM(d.cantidad*d.precio)as from vis_VentasServision inner join DetalleVentaServiciod on vis_VentasServision.idVenta=d.idVentaServicio where vis_VentasServision.fecha=@fechaVenta groupby vis_VentasServision.idCliente

total

open cur_totalesxCliente fetch next from cur_totalxCliente into @idcliente,@totalPuntosDia while @@FETCH_STATUS=0 begin ifexists(select*from puntos whereidcliente=@idcliente) begin update puntos set totalpuntos=totalpuntos+@totalPuntosDia where idcliente=@idcliente end else begin insert into puntos values(@idcliente,@totalPuntosDia) end fetch next from cur_totalesxCliente into @idcliente,@totalPuntosDia end

También podría gustarte