Você está na página 1de 5

**Este cursor imprime los datos (nombre,direccion,telefono) que estan almacenados en la tabla de ccursores.

create table ccursores( Nombre char(40), Direcciones char(80), Telefono char(30)) create procedure Cr_impresion as begin **se declaran las variables declare @Nombre char(40), @Direccion char(80), @Telefono char(30) declare Cr_datos cursor for **de la tabla de cursores traemos los datos con la linea siguiente select Nombre, Direcciones, Telefono from ccursores open Cr_datos fetch Cr_datos into @Nombre, @Direccion, @Telefono while(@@FETCH_STATUS =0) begin **se imprimen los datos con el print print @Nombre print @Direccion print @Telefono fetch next from Cr_datos into @Nombre, @Direccion,@Telefono end close Cr_datos deallocate Cr_doatos end

create table cursores( Id_cliente int, Nombre char(40), Telefono char(30), fecha_pago datetime, saldo float) **este cursor imprime los datos de la tabla cursores pero le antepone una etiqueta con apostrofes () y cada que imprima todos los registros a cada uno le asignara las etiquetas. alter procedure Cr_impresioness as begin declare @Nombre char(40), @fecha_pago datetime, @saldo float declare Cr_datoss cursor for select Nombre, fecha_pago, saldo from cursores open Cr_datoss fetch Cr_datoss into @Nombre, @fecha_pago, @saldo while(@@FETCH_STATUS =0) begin print 'Nombre:'+@Nombre print 'Fecha_Pago:'+ cast(@fecha_pago as char(12)) print 'Saldo:'+ cast (@saldo as char(12)) fetch next from Cr_datoss into

@Nombre, @fecha_pago, @Saldo end close Cr_datoss deallocate Cr_datoss end

create table Cobranza( Id_Pago int, Id_Cobrador int, Monto_pago float, Fecha_Pago datetime) create table Cobradores( Id_Cobrador int, Nombre char (15), Porcentaje_Comisiones float) create table comisiones( Nombre Char(15), Porcentaje_Comision char(20), Monto_Pago char(20), Toatl char(20)) select * from comisiones **este cursor une las tablas de cobradores y cobranza a travez de un inner join donde el id_cobrador de la tabla de cobradores sea igual al id_cobrador de la tabla de cobranza alter procedure Cr_Cobranzas as begin declare @Monto_Pago float, @Nombre char(15), @porcentaje_comision float, @total float declare Cr_datos cursor for select Nombre, Porcentaje_Comisiones, Monto_pago from Cobradores INNER JOIN Cobranza on Cobradores. Id_Cobrador= Cobranza. Id_Cobrador open Cr_datos fetch Cr_datos into @Nombre, @porcentaje_comision, @Monto_pago while(@@FETCH_STATUS =0) begin set @total=@Monto_Pago * @porcentaje_comision print 'Nombre:'+@Nombre print 'Porcentaje_Comision:'+ cast (@porcentaje_comision as char(20)) print 'Monto_Pago:'+ cast(@Monto_Pago as char(20)) print 'total:'+cast(@total as char(20)) fetch next from Cr_datos into @Nombre,@porcentaje_comision,@Monto_Pago end

close Cr_datos deallocate Cr_datos end ////////////////////////////////////////////////////////////////////// ////////////// **este cursor une las tablas de cobadores y cobranza a travez de un inner join y calcula el total de comiciones y lo agrega a la tabla de comisiones. create procedure Cr_insertar as begin declare @Monto_Pago float, @Nombre char(15), @porcentaje_comision float, @total float declare Cr_datos cursor for select Nombre, Porcentaje_Comisiones, Monto_pago from Cobradores INNER JOIN Cobranza on Cobradores. Id_Cobrador= Cobranza. Id_Cobrador open Cr_datos fetch Cr_datos into @Nombre, @porcentaje_comision, @Monto_pago while(@@FETCH_STATUS =0) begin set @total=@Monto_Pago * @porcentaje_comision insert into comisiones (Nombre,Porcentaje_Comision, Monto_Pago,Toatl) values(@Nombre,@porcentaje_comision, @Monto_Pago,@total) fetch next from Cr_datos into @Nombre,@porcentaje_comision,@Monto_Pago end close Cr_datos deallocate Cr_datos end

create table ventas( Id_Venta int, Id_Empleado int, Monto_Venta float) create table Empleados( Id_Empleado int, Nombre char(15), Salario_Dia float) create table Pagos( Id_Empleado int, Pago_Mes float, No_Pagos int) drop table Pagos

**este cursor une las tablas ventas y empleados con un inner join mientras los id_empleados sean iguales en ambas tablas, calcula el numero de pagos que debe de hacer dependiendo de lo que tenga en monto de venta se va a dividir entre el pago del mes y asi se calcula el numero de pagos alter procedure Cr_deudas as begin declare @Id_Empleado int, @Pago_Mes float, @No_Pagos int, @SD float, @SM float, @Monto_Venta float declare Cr_datos cursor for select ventas.Id_Empleado, ventas.Monto_Venta, empleados.Salario_Dia from Ventas INNER JOIN Empleados on Ventas. Id_Empleado= Empleados. Id_Empleado open Cr_datos fetch Cr_datos into @Id_Empleado, @Monto_Venta, @SD while(@@FETCH_STATUS =0) begin set @SM=@SD * 30 set @Pago_Mes =@SM * 0.25 set @No_Pagos =@Monto_Venta / @Pago_Mes insert into Pagos (Id_Empleado,Pago_Mes, No_Pagos) values(@Id_Empleado, @Pago_Mes, @No_Pagos) fetch next from Cr_datos into @Id_Empleado, @Pago_Mes, @No_Pagos end close Cr_datos deallocate Cr_datos end select * from Pagos

create table Alumnos( Id_Alumno int, Nombre char(80), Id_Licenciatura int, Porcentaje_Beca int) create table Calificaciones( Id_Materia int, Id_Alumno int, Periodo char(50), Calificacion float) **este cursor extrae los datos de la tabla de calificaciones y si la calificacion es menor a 8 se actualiza la tabla de alumnos y le descuenta un 10% de beca siempre y cuando el id_alumno sea igual en las 2 tablas. alter procedure Cr_escuela as begin declare @Id_Alumno int, @Calificacion int, @porcentaje_beca int

declare Cr_datos cursor for select Id_Alumno, AVG (Calificacion) from Calificaciones group by Id_Alumno open Cr_datos fetch Cr_datos into @Id_Alumno, @Calificacion while(@@FETCH_STATUS =0) begin if @calificacion < 8 update Alumnos set porcentaje_beca= porcentaje_beca - 10 where Id_Alumno =@Id_Alumno fetch next from Cr_datos into @Id_Alumno, @Calificacion end close Cr_datos deallocate Cr_datos end select * from Alumnos

Você também pode gostar