Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Número 1 (Gijón)
HOCKEY. Parte 12.Proce_Almac
-- ================================================
-- Procedimiento Almacenado para calcular la media
-- de espectadores en cada competición, indicando
-- algunos datos de de la competición.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE pa_MediaCompetición
AS
BEGIN
SET NOCOUNT ON;
/* Ejemplo de llamada */
-- Seleccionamos la base de datos
use Patinazo
-- ================================================
-- Procedimiento Almacenado para insertar equipo
-- en la tabla Equipos.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE pa_NuevoEquipo
-- Parámetros de Entrada
@numero INT,
@nombre nvarchar(30),
@localidad NVARCHAR(50),
@alta date,
@tfno nvarchar(9),
@presupuesto int,
@existe nvarchar(1),
@comunidad varchar(3),
@numFed int,
-- Parámetro de Salida
@mensajes nvarchar(150) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION añadir
BEGIN TRY
INSERT INTO Equipos (numReg, nombre, localidad, fecCrea, tfnConta,
presupuesto, desaparecido, ccaa, numFed)
VALUES (@numero, @nombre, @localidad, @alta, @tfno, @presupuesto,
@existe, @comunidad, @numFed)
BEGIN CATCH
SET @mensajes = 'Se produjo el error: '+ERROR_MESSAGE()+' en la
linea '+CAST(ERROR_LINE() as nvarchar(100))
ROLLBACK TRANSACTION añadir
END CATCH
END
/* Ejemplos de llamadas */
-- Seleccionamos la base de datos
use Patinazo
-- ================================================
-- Procedimiento Almacenado para bonificar al jugador
-- más veterano si la bonificación no excede su ficha anual.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE pa_Bonificarjugador
-- Parámetros de Entrada
@bonifica int,
-- Parámetro de Salida
@mensajes nvarchar(150) OUTPUT
AS
BEGIN
DECLARE @numero int, @ficha int
SET NOCOUNT ON;
BEGIN TRANSACTION bonificar
BEGIN TRY
select @numero=numFed, @ficha=isnull(fichAnual,0)
from jugadores
where fecNto= (select MIN(fecNto) from Jugadores)
BEGIN CATCH
SET @mensajes = 'Se produjo el error: '+ERROR_MESSAGE()
ROLLBACK TRANSACTION bonificar
END CATCH
END
/* Ejemplo de llamada */
-- Seleccionamos la base de datos
use Patinazo
--================================================
--Procedimiento Almacenado para calcular la media
--de espectadores en una determinada competición, indicando
--el ingreso media en función de 12€ por espectador.
--================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE pa_MediaCompeticionManual
@competicion int, @especta int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
if exists(select * from Competicion where idComp=@competicion)
Begin
SET @especta= (SELECT AVG(pa.numEsp) FROM competicion con
INNER JOIN partidos pa ON con.idComp = pa.idComp
and con.idComp=@competicion
GROUP BY con.idComp)
print 'El numero medio de espectadores es: ' +
cast((isnull(@especta,0)) as char)
end
else
Begin
print 'No existe esta competición '
set @especta = 0
end
END
Zona de resultados:
Select del equipo obtenido
Select de los jugadores del equipo
--================================================
-- Procedimiento Almacenado que obtiene los jugadores
-- del equipo que se pasan como parámetro
--================================================
CREATE PROCEDURE pa_ObtenerJugador
@numero int
AS
BEGIN
DECLARE @cuentas int = (select COUNT(*) from jugadores where numReg=@numero)
SET NOCOUNT ON;
print 'El equipo lo forman: '+ cast(@cuentas as char(2))+ ' jugadores'
select * from jugadores where numReg=@numero
END
--================================================
--Procedimiento Almacenado para obtiene el equipo
--que posee mayor presupuesto.
--Con ese dato se obtienen los jugadores del mismo.
--================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE pa_MaximoPresupuesto AS
BEGIN
DECLARE @equipo int =0
SET NOCOUNT ON;
select * from Equipos
where presupuesto = (select MAX(presupuesto) from equipos)
set @equipo = (select numReg from Equipos
where presupuesto = (select MAX(presupuesto) from equipos))
print 'El máximo presupuesto es del equipo ' + cast(@equipo as char)
EXEC pa_ObtenerJugador @equipo
END
--================================================
-- Procedimiento Almacenado que obtiene los jugadores
-- del equipo que se pasan como parámetro
--================================================
CREATE PROCEDURE pa_ObtenerJugador
@numero int
AS
BEGIN
DECLARE @cuentas int = (select COUNT(*) from jugadores where numReg=@numero)
SET NOCOUNT ON;
print 'El equipo lo forman: '+ cast(@cuentas as char(2))+ ' jugadores'
select * from jugadores where numReg=@numero
END
--================================================
--Procedimiento Almacenado para obtiene el equipo
--que posee mayor presupuesto.
--Con ese dato se obtienen los jugadores del mismo.
--================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE pa_MaximoPresupuestoV2
@equipo int OUTPUT
AS
BEGIN
SET @equipo=0