Está en la página 1de 7

use data4

select * from sys.tables


select * from estudiante
select * from Matricula
select * from Asignatura
select * from Nota
insert Matricula values (7,2021,4)
go
alter procedure insertar_notas_periodo
@idmat int,@semestre int
as
begin
begin try
begin transaction
declare @idasig int
declare c_asignat cursor for select idasig from Asignatura where semes =
@semestre
open c_asignat
fetch c_asignat into @idasig
while @@FETCH_STATUS = 0
begin
insert Nota (idmat,idasig)values (@idmat,@idasig)
fetch c_asignat into @idasig
end
close c_asignat
deallocate c_asignat
commit transaction
end try
begin catch
rollback transaction
close c_asignat
deallocate c_asignat
print @@error
end catch
end
---
execute insertar_notas_periodo 8,4
select * from Estudiante e inner join Matricula m
on e.idest = m.idest inner join Nota n
on m.idmat = n.idmat inner join Asignatura a
on n.idasig = a.idasig where e.idest = 7

CREATE DATABASE [LUBRICADORA]


GO
USE [LUBRICADORA]
GO
/****** Object: Table [dbo].[auditoria_VENTASERVICIO] Script Date: 08/08/2022
18:19:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[auditoria_VENTASERVICIO](
[IDVENTASERVICIO] [int] NULL,
[IDVENTA] [int] NULL,
[IDSERVICIO] [int] NULL,
[CANT] [int] NULL,
[SUBTOTAL] [real] NULL,
[servidor] [varchar](30) NULL,
[usuario] [varchar](30) NULL,
[fecha] [date] NULL,
[hora] [time](7) NULL,
[accion] [char](1) NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[CLIENTE] Script Date: 08/08/2022 18:19:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CLIENTE](
[IDCLIENTE] [int] IDENTITY(1,1) NOT NULL,
[NOMBRES] [varchar](100) NULL,
[CEDULA] [varchar](100) NULL,
[FECHA_NAC] [date] NULL,
[GENERO] [int] NULL,
PRIMARY KEY CLUSTERED
(
[IDCLIENTE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[MARCA] Script Date: 08/08/2022 18:19:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MARCA](
[IDMARCA] [int] NOT NULL,
[NOMBRE] [varchar](100) NULL,
PRIMARY KEY CLUSTERED
(
[IDMARCA] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[MODELO] Script Date: 08/08/2022 18:19:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MODELO](
[IDMODELO] [int] NOT NULL,
[IDMARCA] [int] NULL,
[NOMBRE] [varchar](100) NULL,
PRIMARY KEY CLUSTERED
(
[IDMODELO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[SERVICIO] Script Date: 08/08/2022 18:19:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SERVICIO](
[IDSERVICIO] [int] IDENTITY(1,1) NOT NULL,
[NOMBRE] [varchar](100) NULL,
[PRECIO] [real] NULL,
PRIMARY KEY CLUSTERED
(
[IDSERVICIO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[VEHICULO] Script Date: 08/08/2022 18:19:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[VEHICULO](
[IDVEHICULO] [int] IDENTITY(1,1) NOT NULL,
[IDCLIENTE] [int] NULL,
[IDMODELO] [int] NULL,
[PLACA] [varchar](8) NULL,
[ANIO] [int] NULL,
PRIMARY KEY CLUSTERED
(
[IDVEHICULO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[VENTA] Script Date: 08/08/2022 18:19:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[VENTA](
[IDVENTA] [int] IDENTITY(1,1) NOT NULL,
[IDVEHICULO] [int] NULL,
[FECHA_REGISTRO] [date] NULL,
[SUBTOTAL] [real] NULL,
[IVA] [real] NULL,
[DSCTO] [real] NULL,
[TOTAL] [real] NULL,
PRIMARY KEY CLUSTERED
(
[IDVENTA] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[VENTASERVICIO] Script Date: 08/08/2022 18:19:59
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[VENTASERVICIO](
[IDVENTASERVICIO] [int] IDENTITY(1,1) NOT NULL,
[IDVENTA] [int] NULL,
[IDSERVICIO] [int] NULL,
[CANT] [int] NULL,
[SUBTOTAL] [real] NULL,
PRIMARY KEY CLUSTERED
(
[IDVENTASERVICIO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[auditoria_VENTASERVICIO] ([IDVENTASERVICIO], [IDVENTA], [IDSERVICIO],
[CANT], [SUBTOTAL], [servidor], [usuario], [fecha], [hora], [accion]) VALUES (3, 1,
2, 1, 12, N'DESKTOP-EADL4IC', N'DESKTOP-EADL4IC\DOCENTE_UNEMI', CAST(N'2022-07-18'
AS Date), CAST(N'18:36:59.4766667' AS Time), N'i')
INSERT [dbo].[auditoria_VENTASERVICIO] ([IDVENTASERVICIO], [IDVENTA], [IDSERVICIO],
[CANT], [SUBTOTAL], [servidor], [usuario], [fecha], [hora], [accion]) VALUES (4, 1,
3, 1, 5, N'DESKTOP-EADL4IC', N'DESKTOP-EADL4IC\DOCENTE_UNEMI', CAST(N'2022-07-18'
AS Date), CAST(N'18:37:30.3300000' AS Time), N'i')
INSERT [dbo].[auditoria_VENTASERVICIO] ([IDVENTASERVICIO], [IDVENTA], [IDSERVICIO],
[CANT], [SUBTOTAL], [servidor], [usuario], [fecha], [hora], [accion]) VALUES (3, 1,
2, 1, 12, N'DESKTOP-EADL4IC', N'DESKTOP-EADL4IC\DOCENTE_UNEMI', CAST(N'2022-07-18'
AS Date), CAST(N'18:38:29.0366667' AS Time), N'e')
GO
SET IDENTITY_INSERT [dbo].[CLIENTE] ON

INSERT [dbo].[CLIENTE] ([IDCLIENTE], [NOMBRES], [CEDULA], [FECHA_NAC], [GENERO])


VALUES (1, N'RAUL CARRION', N'1234567890', CAST(N'2000-01-30' AS Date), 1)
INSERT [dbo].[CLIENTE] ([IDCLIENTE], [NOMBRES], [CEDULA], [FECHA_NAC], [GENERO])
VALUES (2, N'DIANA CASTRO', N'1234561234', CAST(N'2001-05-14' AS Date), 2)
INSERT [dbo].[CLIENTE] ([IDCLIENTE], [NOMBRES], [CEDULA], [FECHA_NAC], [GENERO])
VALUES (3, N'SARA GOMEZ', N'1712345673', CAST(N'1998-08-25' AS Date), 2)
SET IDENTITY_INSERT [dbo].[CLIENTE] OFF
GO
INSERT [dbo].[MARCA] ([IDMARCA], [NOMBRE]) VALUES (1, N'Chevrolet')
INSERT [dbo].[MARCA] ([IDMARCA], [NOMBRE]) VALUES (2, N'Hyundai')
INSERT [dbo].[MARCA] ([IDMARCA], [NOMBRE]) VALUES (4, N'Nissan')
INSERT [dbo].[MARCA] ([IDMARCA], [NOMBRE]) VALUES (5, N'Reanult')
INSERT [dbo].[MARCA] ([IDMARCA], [NOMBRE]) VALUES (3, N'Toyota')
GO
INSERT [dbo].[MODELO] ([IDMODELO], [IDMARCA], [NOMBRE]) VALUES (1, 1, N'Gran
Vitara')
INSERT [dbo].[MODELO] ([IDMODELO], [IDMARCA], [NOMBRE]) VALUES (2, 1, N'Aveo
Family')
INSERT [dbo].[MODELO] ([IDMODELO], [IDMARCA], [NOMBRE]) VALUES (3, 1, N'Dmax')
INSERT [dbo].[MODELO] ([IDMODELO], [IDMARCA], [NOMBRE]) VALUES (4, 2, N'Accent')
INSERT [dbo].[MODELO] ([IDMODELO], [IDMARCA], [NOMBRE]) VALUES (5, 3, N'Hilux')
INSERT [dbo].[MODELO] ([IDMODELO], [IDMARCA], [NOMBRE]) VALUES (6, 4, N'Frontier')
GO
SET IDENTITY_INSERT [dbo].[SERVICIO] ON

INSERT [dbo].[SERVICIO] ([IDSERVICIO], [NOMBRE], [PRECIO]) VALUES (3, N'engrasada',


12)
SET IDENTITY_INSERT [dbo].[SERVICIO] OFF
GO
SET IDENTITY_INSERT [dbo].[VEHICULO] ON

INSERT [dbo].[VEHICULO] ([IDVEHICULO], [IDCLIENTE], [IDMODELO], [PLACA], [ANIO])


VALUES (1, 1, 1, N'rty0098', 2000)
INSERT [dbo].[VEHICULO] ([IDVEHICULO], [IDCLIENTE], [IDMODELO], [PLACA], [ANIO])
VALUES (2, 2, 3, N'grt4532', 1998)
INSERT [dbo].[VEHICULO] ([IDVEHICULO], [IDCLIENTE], [IDMODELO], [PLACA], [ANIO])
VALUES (3, 1, 4, N'rty1234', 2005)
INSERT [dbo].[VEHICULO] ([IDVEHICULO], [IDCLIENTE], [IDMODELO], [PLACA], [ANIO])
VALUES (4, 3, 6, N'ghg1234', 2009)
INSERT [dbo].[VEHICULO] ([IDVEHICULO], [IDCLIENTE], [IDMODELO], [PLACA], [ANIO])
VALUES (5, 3, 4, N'rty0008', 2008)
INSERT [dbo].[VEHICULO] ([IDVEHICULO], [IDCLIENTE], [IDMODELO], [PLACA], [ANIO])
VALUES (6, 1, 6, N'PBX0012', 2011)
SET IDENTITY_INSERT [dbo].[VEHICULO] OFF
GO
SET IDENTITY_INSERT [dbo].[VENTA] ON

INSERT [dbo].[VENTA] ([IDVENTA], [IDVEHICULO], [FECHA_REGISTRO], [SUBTOTAL], [IVA],


[DSCTO], [TOTAL]) VALUES (1, 3, CAST(N'2022-07-18' AS Date), 0, 0, 0, 0)
INSERT [dbo].[VENTA] ([IDVENTA], [IDVEHICULO], [FECHA_REGISTRO], [SUBTOTAL], [IVA],
[DSCTO], [TOTAL]) VALUES (2, 3, CAST(N'2022-07-16' AS Date), 0, 0, 0, 0)
SET IDENTITY_INSERT [dbo].[VENTA] OFF
GO
SET IDENTITY_INSERT [dbo].[VENTASERVICIO] ON

INSERT [dbo].[VENTASERVICIO] ([IDVENTASERVICIO], [IDVENTA], [IDSERVICIO], [CANT],


[SUBTOTAL]) VALUES (4, 1, 3, 1, 5)
SET IDENTITY_INSERT [dbo].[VENTASERVICIO] OFF
GO
SET ANSI_PADDING ON
GO
/****** Object: Index [UQ__CLIENTE__06BB8448B91F2424] Script Date: 08/08/2022
18:19:59 ******/
ALTER TABLE [dbo].[CLIENTE] ADD UNIQUE NONCLUSTERED
(
[CEDULA] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object: Index [UQ__MARCA__B21D0AB937F0DFFA] Script Date: 08/08/2022
18:19:59 ******/
ALTER TABLE [dbo].[MARCA] ADD UNIQUE NONCLUSTERED
(
[NOMBRE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object: Index [UQ__SERVICIO__B21D0AB96BE4DFD6] Script Date: 08/08/2022
18:19:59 ******/
ALTER TABLE [dbo].[SERVICIO] ADD UNIQUE NONCLUSTERED
(
[NOMBRE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object: Index [UQ__VEHICULO__E441AE0051E52857] Script Date: 08/08/2022
18:19:59 ******/
ALTER TABLE [dbo].[VEHICULO] ADD UNIQUE NONCLUSTERED
(
[PLACA] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CLIENTE] ADD DEFAULT (getdate()) FOR [FECHA_NAC]
GO
ALTER TABLE [dbo].[CLIENTE] ADD DEFAULT ((1)) FOR [GENERO]
GO
ALTER TABLE [dbo].[SERVICIO] ADD DEFAULT ((0.00)) FOR [PRECIO]
GO
ALTER TABLE [dbo].[VENTA] ADD DEFAULT ((0.00)) FOR [IVA]
GO
ALTER TABLE [dbo].[VENTA] ADD DEFAULT ((0.00)) FOR [DSCTO]
GO
ALTER TABLE [dbo].[VENTA] ADD DEFAULT ((0.00)) FOR [TOTAL]
GO
ALTER TABLE [dbo].[VENTASERVICIO] ADD DEFAULT ((0.00)) FOR [SUBTOTAL]
GO
ALTER TABLE [dbo].[MODELO] WITH CHECK ADD FOREIGN KEY([IDMARCA])
REFERENCES [dbo].[MARCA] ([IDMARCA])
GO
ALTER TABLE [dbo].[VEHICULO] WITH CHECK ADD FOREIGN KEY([IDCLIENTE])
REFERENCES [dbo].[CLIENTE] ([IDCLIENTE])
GO
ALTER TABLE [dbo].[VEHICULO] WITH CHECK ADD FOREIGN KEY([IDMODELO])
REFERENCES [dbo].[MODELO] ([IDMODELO])
GO
ALTER TABLE [dbo].[VENTA] WITH CHECK ADD FOREIGN KEY([IDVEHICULO])
REFERENCES [dbo].[VEHICULO] ([IDVEHICULO])
GO
ALTER TABLE [dbo].[VENTASERVICIO] WITH CHECK ADD FOREIGN KEY([IDSERVICIO])
REFERENCES [dbo].[SERVICIO] ([IDSERVICIO])
GO
ALTER TABLE [dbo].[VENTASERVICIO] WITH CHECK ADD FOREIGN KEY([IDVENTA])
REFERENCES [dbo].[VENTA] ([IDVENTA])
GO

insert SERVICIO values ('revisión de bateria',1),


('cambio de aceite',1.5),('revisión de neumaticos',2)
usE LUBRICADORA
select * from sys.tables
--cursores--
select * from SERVICIO
insert SERVICIO values ('revisión de bateria',1),
('cambio de aceite',1.5),('revisión de neumaticos',2)
select * from VENTA
select * from VENTASERVICIO
select * from VEHICULO
select @@IDENTITY
go
create proc sp_generar_vta
@idvehiculo int
as
begin try
begin transaction
--grabar la cabecera de la venta
insert VENTA (IDVEHICULO,FECHA_REGISTRO) values (@idvehiculo,GETDATE())
declare @idvta int
set @idvta = @@IDENTITY
--grabar el detalle/venta, con todos los servicios
declare @idserv int, @prec real
declare c_servicios cursor for select IDSERVICIO,PRECIO from SERVICIO
open c_servicios
fetch c_servicios into @idserv,@prec
while @@FETCH_STATUS = 0
begin
insert VENTASERVICIO (IDVENTA,IDSERVICIO,CANT,SUBTOTAL) values
(@idvta,@idserv,1,1*@prec)
fetch c_servicios into @idserv,@prec
end
close c_servicios
deallocate c_servicios
--actualizar el subtotal, iva y el total de la venta
declare @subt real = (select sum(SUBTOTAL) from VENTASERVICIO where IDVENTA =
@idvta)
declare @iva real = @subt * 0.12
declare @tot real = @subt + @iva
update VENTA set SUBTOTAL = @subt,IVA=@iva,TOTAL=@tot where IDVENTA = @idvta
commit transaction
end try
begin catch
rollback transaction
select @@ERROR
end catch
go
exec sp_generar_vta 6
select * from VENTA v,VENTASERVICIO vs, SERVICIO s where v.IDVENTA = 3 and
v.IDVENTA = vs.IDVENTA and vs.IDSERVICIO = s.IDSERVICIO

También podría gustarte