lunes, 26 de septiembre de 2011

[INF-272] PROYECTO : Procedimientos Almacenados

--****************************
--PROCEDIMIENTOS**************
--****************************
--1.- DESCONTAR UN PORCENTAJE D DEL CLIENTE C QUE PARTICIPO EN MAS VENTAS
ALTER PROCEDURE PROC1 @C VARCHAR(255), @D INTEGER
AS
BEGIN
   IF (EXISTS(SELECT * FROM CLIENTES WHERE NOMBRE= @C  ) )
   BEGIN
       UPDATE VENTAS SET IMPORTE=IMPORTE - IMPORTE*(@D/100)
       WHERE ID_VENTA IN (SELECT V1.ID_VENTA
                           FROM VENTAS V1, CLIENTES C
                           WHERE V1.ID_CLIENTE=C.ID_CLIENTE
                               AND V1.IMPORTE IN (SELECT MAX(V.IMPORTE)
                                                 FROM VENTAS V, CLIENTES C
                                                 WHERE V.ID_CLIENTE =C.ID_CLIENTE
                                                   AND @C=C.NOMBRE))                      
       PRINT 'DATOS ACTULIZADOS'
   END
   ELSE
   BEGIN
       PRINT 'NO EXISTE CLIENTE'
   END
END
EXEC PROC1 'JUAN FLORES',5

--2.- ELIMINAR LOS CONTRATO REALIZADOS POR EL CLIENTE DE NOMBRE N
--CONJUNTAMENTE CON LA COTIZACION REALIZADA Y LA FACTURA
CREATE PROCEDURE PROC2 (@N VARCHAR(255))
AS
BEGIN
   DECLARE @ID_C INTEGER
   SET @ID_C=(SELECT ID_CLIENTE FROM CLIENTES WHERE @N=NOMBRE)
   IF (@ID_C!=NULL)
   BEGIN
       DELETE VENTA WHERE @ID_C=ID_CLIENTE
       DELETE LINEA_COTIZACION WHERE ID_CONTRATO IN
               (SELECT ID_CONTRATO FROM CONTRATO
                WHERE ID_CLIENTE=@ID_C)    
       DELETE CONTRATO WHERE ID_CONTRATO=@ID_C
   END
   ELSE
   BEGIN
       PRINT 'NO EXISTE CLIENTE EN LOS REGISTROS'
   END
END
EXEC PROC2 'JUAN PEREZ'

No hay comentarios:

Publicar un comentario