La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título.

Presentaciones similares


Presentación del tema: "Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título."— Transcripción de la presentación:

1

2 Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título Nombre Cliente Calle numerocalle, ciudad bajo el titulo Direccion Edad-calcular Categoría Sexo

3 Pregunta 1. Qué se pide? Select o print? Tenemos los datos? Qué tabla es la utilizada? Nombre Cliente: concatenar n1, n2, a1, a2 Direccion: concatenar calle, nr, ciudad Edad: calcular a partir de fecha nacimiento, usar funcion Categoria: depende de que? Sexo: depende de que? Uso de Case

4

5 select primer_nombre+' '+segundo_nombre+', '+primer_apellido+' '+segundo_apellido as 'Nombre Cliente', calle+' '+numero+', '+ciudad as Direccion, datediff(year, fecha_nacimiento, getdate()) as Edad,… … From cliente

6 … categoria= case when datediff(year, fecha_nacimiento, getdate()) <17 then 'Adolescente' when datediff(year, fecha_nacimiento, getdate()) between 17 and 30 then 'Joven' when datediff(year, fecha_nacimiento, getdate()) between 31 and 60 then 'Adulto' when datediff(year, fecha_nacimiento, getdate()) >60 then 'Adulto Mayor' end

7 sexo= case sexo when 'm' then 'Masculino' when 'f' then 'Femenino' end

8 create procedure uno as select primer_nombre+' '+segundo_nombre+', '+primer_apellido+' '+segundo_apellido as 'Nombre Cliente', calle+' '+numero+', '+ciudad as Direccion, datediff(year, fecha_nacimiento, getdate()) as Edad, categoria= case when datediff(year, fecha_nacimiento, getdate()) <17 then 'Adolescente' when datediff(year, fecha_nacimiento, getdate()) between 17 and 30 then 'Joven' when datediff(year, fecha_nacimiento, getdate()) between 31 and 60 then 'Adulto' when datediff(year, fecha_nacimiento, getdate()) >60 then 'Adulto Mayor' end, sexo= case sexo when 'm' then 'Masculino' when 'f' then 'Femenino' end from cliente

9 Para mantener un stock actualizado de la cantidad existente de cada producto, el dueño necesita que cada vez que se quiera comprar cierta cantidad de un producto se tome en cuenta si es que existe la cantidad requerida (p.e. si tengo 15 pañuelos desechables no puedo vender 16…solo hasta 15). Si no existe la cantidad requerida, no se puede hacer la compra. Cuando se pueda hacer la compra, se debe registrar (insertar datos en registros de compra) y actualizar la cantidad en stock del producto en cuestión. Utilice IF ELSE, RETURN, PRINT, Parámetros de entrada. Tome en cuenta las condiciones que podrían surgir al hacer esto, imprimir mensajes en pantalla.

10 Pregunta 2. Qué se pide? (qué entendieron del problema) Qué tablas participan? Uso de Insert, Update, Delete? Uso de parametros de entrada? Qué datos participan? Cuál es la condicion pedida? Cuáles son las condiciones básicas?

11 create procedure dos (@rut varchar(10), @producto varchar(8), @fecha smalldatetime, @cant int, @pago char(1))

12 Condicion pedida: existe en stock la cantidad del producto que se va a comprar? if ((select stock from producto where codigo_producto=@producto)-@cant)>=0

13 Otras condiciones Verificar si existe otro registro con las mismas claves… if not exists (select * from compra where rut_cliente=@rut and codigo_producto=@producto and fecha_compra=@fecha) Verificar si existe cliente if exists (select * from cliente where rut_cliente=@rut) Verificar si existe producto if exists (select * from producto where codigo_producto=@producto)

14 Acciones a realizar si se cumple primera condicion insert into compra (rut_cliente, codigo_producto, fecha_compra, cantidad, forma_pago) values (@rut, @producto, @fecha, @cant, @pago) update producto set stock=stock-@cant where codigo_producto=@producto Sino, no se inserta registro en compra ni se actualiza stock

15 create procedure dos (@rut varchar(10), @producto varchar(8), @fecha smalldatetime, @cant int, @pago char(1)) as if not exists (select * from compra where rut_cliente=@rut and codigo_producto=@producto and fecha_compra=@fecha) begin if exists (select * from cliente where rut_cliente=@rut) begin if exists (select * from producto where codigo_producto=@producto) begin if ((select stock from producto where codigo_producto=@producto)-@cant)>=0 begin insert into compra (rut_cliente, codigo_producto, fecha_compra, cantidad, forma_pago) values (@rut, @producto, @fecha, @cant, @pago) update producto set stock=stock-@cant where codigo_producto=@producto return 0 /*ok*/ end else return 4 end else return 1 /*no existe producto*/ end else return 2 /*no existe el cliente*/ end else return 3

16 declare @status int declare @ahora smalldatetime set @ahora=getdate() exec @status=tres '03777228-7', '74747GBF', @ahora, 1, 't' print @status if @status=0 print 'Registro de compra ingresado correctamente.' else if @status=1 print 'Prducto no existe' else if @status=2 print 'Cliente no existe' else if @status=3 print 'Registro ya ingresado' else if @status=4 print 'No se puede registrar la compra, no hay productos suficientes'

17 Después de un largo análisis, el dueño decidió cada cierto tiempo bajar en un 10% el precio de aquellos productos que estén vencidos a ese día, y que sean de una marca especifica. Si se dan esas condiciones, desea que le muestre el nombre de los productos actualizados con su nuevo precio. Sino, imprime mensaje en pantalla. Como funcionara esto? Un día cualquiera el dueño decidirá bajar precios. Para ello utilizara el PA creado por usted y el solo ingresara la marca a considerar. Si hay productos de esa marca que estén vencidos a ese día, se le bajara el precio un 10%. Utilice IF ELSE, RETURN, PRINT, Parámetros de entrada. Tome en cuenta las condiciones que podrían surgir al hacer esto, imprimir mensajes en pantalla.

18 Pregunta 3. Qué se pide? (qué entendieron del problema) Qué tablas participan? Uso de Insert, Update, Delete? Uso de parametros de entrada? Qué datos participan? Cuál es la condicion pedida? Cuáles son las condiciones básicas?

19 create procedure tres (@marca varchar(15))

20 Condicion pedida: existen productos vencidos al dia de hoy (cuando ejecuto el PA) de la marca especifica if exists (select * from producto where fecha_vencimiento<getdate() and marca=@marca)

21 Otras condiciones Verificar si existe la marca if exists (select * from producto where marca=@marca)

22 Acciones a realizar si se cumple primera condicion update producto set precio=precio*0.9 where fecha_vencimiento<getdate() and marca=@marca select * from producto where fecha_vencimiento<getdate() and marca=@marca Sino…?

23 create procedure tres (@marca varchar(15)) as if exists (select * from producto where fecha_vencimiento<getdate() and marca=@marca) begin update producto set precio=precio*0.9 where fecha_vencimiento<getdate() and marca=@marca select * from producto where fecha_vencimiento<getdate() and marca=@marca return 0 end else return 1

24 declare @status int exec @status=cuatro 'nestle' if @status=0 print 'Precios cambiados' else if @status=1 print 'No hay productos que cumplan con requisitos'

25 Algunos clientes pagan su compra en efectivo e, con tarjeta de crédito t o con redcompra r. El dueño no confía en las tarjetas de crédito, por lo que no permite compras con tarjeta de crédito que superen 10 unidades de un producto. Genere un PA que controle este hecho al insertar una nueva compra. Ejemplo: se inserta en la tabla compra el cliente y, el producto x, la fecha actual (momento de la compra), cantidad del producto y forma de pago. Si ocurre la condición dada, debe imprimir un mensaje por pantalla y no permitir la compra. Utilice IF ELSE, RETURN, PRINT, Parámetros de entrada. Reutilice el código…

26 Bonus. Qué se pide? (qué entendieron del problema) Qué tablas participan? Uso de Insert, Update, Delete? Uso de parametros de entrada? Qué datos participan? Cuál es la condicion pedida? Cuáles son las condiciones básicas?

27 Condicion pedida: supera la cantidad del producto a comprar las 10 unidades y y la forma de pago es tarjeta de credito? if (@pago='t') and (@cant>10)

28 Condiciones basicas: igual que problema 2.

29 Acciones a realizar si no se cumple primera condicion insert into compra (rut_cliente, codigo_producto, fecha_compra, cantidad, forma_pago) values (@rut, @producto, @fecha, @cant, @pago) Sino, no se inserta registro en compra…

30 create procedure bonus (@rut varchar(10), @producto varchar(8), @fecha datetime, @cant int, @pago char(1)) as if not exists (select * from compra where rut_cliente=@rut and codigo_producto=@producto and fecha_compra=@fecha) begin if exists (select * from cliente where rut_cliente=@rut) begin if exists (select * from producto where codigo_producto=@producto) begin if (@pago='t') and (@cant>10) return 4 /*pago con tarjeta credito no puede superar cantidad 10*/ else insert into compra (rut_cliente, codigo_producto, fecha_compra, cantidad, forma_pago) values (@rut, @producto, @fecha, @cant, @pago) return 0 /*ok*/ end else return 1 /*no existe producto*/ end else return 2 /*no existe el cliente*/ end else return 3

31 declare @status int declare @ahora smalldatetime set @ahora=getdate() exec @status=dos '03777228-7', '93823HBF', @ahora, 17, 't' print @status if @status=0 print 'Registro de compra ingresado correctamente.' else if @status=1 print 'Prducto no existe' else if @status=2 print 'Cliente no existe' else if @status=3 print 'Registro ya ingresado' else if @status=4 print 'No se puede comprar mas de 10 productos con ese tipo de pago'


Descargar ppt "Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título."

Presentaciones similares


Anuncios Google