miércoles, 9 de noviembre de 2011

Triggers en sql

Triggers:

  • Implementar y comprobar un trigger que contabilice el número de participantes en AJEDREZ
Escribimos en el Query:
CREATE TRIGGER number_Participantes ON PARTICIPANTE
FOR INSERT,UPDATE
AS BEGIN
    DECLARE @N INT
        SELECT @N = COUNT(*)
        FROM PARTICIPANTE_HOTEL PH

     PRINT @N
END 
Luego realizamos la consulta:
INSERT INTO PARTICIPANTE
(C_ASOCIADO, C_PAIS, N_NOMBRE, T_DIRECCION, D_FECHA_NAC)
 VALUES
 ( 'A11', 'P1', 'Julio Qwerty', 'Av. Universidad', NULL )

  • Implementar y comprobar un trigger que contabilice el número partidos que participo un Jugador en CAMPEONATO
Escribimos en el Query:
CREATE TRIGGER Numero_Partidos ON JUG_PARTIDO
FOR INSERT,UPDATE
AS BEGIN
    SELECT C_JUGADOR, COUNT(*)
    FROM JUG_PARTIDO J
    GROUP BY J.C_JUGADOR
END 
Luego realizamos la consulta:
INSERT INTO JUG_PARTIDO
(C_JUGADOR,NRO_PARTIDO,N_POSICION,NRO_CAMISETA,
 F_EXPULSADO,F_AMONESTADO,F_GOLEADOR)
 VALUES
 ('J19', 1, 'DELANTERO', 11, NULL, NULL, NULL )

  • Implementar mediante trigges la auditoria de participantes en AJEDREZ
Escribimos en el Query:
CREATE TRIGGER Auditoria ON PARTICIPANTE
FOR INSERT
AS BEGIN
  DECLARE @N VARCHAR(3)
  SELECT @N = C_ASOCIADO
  FROM INSERTED

  PRINT 'Codigo : ' + @N
  PRINT 'Fecha de insercion : ' + CONVERT(VARCHAR(50),GETDATE())
END 
Luego realizamos la consulta:
INSERT INTO PARTICIPANTE
(C_ASOCIADO,C_PAIS,N_NOMBRE,T_DIRECCION,D_FECHA_NAC)
VALUES
('A12','P1','Carlos Mariategui','Calle Los Geranios',NULL)

Procedimientos en SQL

Procedimientos:

  • Crear un procedimiento que registre un jugador, solo datos personales en CAMPEONATO
Escribimos en el Query:
CREATE PROCEDURE REGISTRA_JUGADOR @CODIGO CHAR(3), 
@N_JUGADOR CHAR(223), @FECHA_NAC date 
AS BEGIN
         INSERT   (C_JUGADOR,N_JUGADOR,D_NACIMIENTO)
         VALUES   (@CODIGO,@N_JUGADOR,@FECHA_NAC)
 END 
Luego realizamos la consulta:
EXEC REGISTRA_JUGADOR 'J21','Agustin Xerox',NULL 
 
  • Crear un procedimiento que liste los jugadores de un Equipo en CAMPEONATO
Escribimos en el Query:
CREATE PROCEDURE LISTAR_JUGADORES_EQUIPO @C_EQUIPO CHAR(2)
AS
BEGIN
  SELECT J.C_JUGADOR
  FROM JUG_EQ_CAMP J
  WHERE J.C_EQUIPO = @C_EQUIPO
END 
Luego realizamos la consulta:
EXEC LISTAR_JUGADORES_EQUIPO 'E1' 

  • Crear un procedimiento que registre los movimientos realizados por un jugador y su comentario en AJEDREZ
Escribimos en el Query:
CREATE PROCEDURE REGISTRAR_MOVIMIENTOS_JUGADOR @C_JUGADOR VARCHAR(3),
                 @NRO_ORDEN INT, @NRO_PARTIDA INT, @N_FICHA VARCHAR(20),
                 @T_POS_INICIAL VARCHAR(20), @T_POS_FINAL VARCHAR(20),
                 @T_COMENTARIO VARCHAR(20)
AS
BEGIN
    INSERT INTO Movimiento
    (
        Nro_Orden,
        Nro_Partida,
        N_Ficha,
        T_Pos_Inicial,
        T_Pos_Final,
        T_Comentario,
        C_Jugador
    )
    VALUES
    (
        @NRO_ORDEN,
        @NRO_PARTIDA,
        @N_FICHA,
        @T_POS_INICIAL,
        @T_POS_FINAL,
        @T_COMENTARIO,
        @C_JUGADOR
    )
END 
Luego realizamos la consulta:
EXEC REGISTRAR_MOVIMIENTOS_JUGADOR 'J01',1,1,'Alfil','E2','D1','JAQUE!' 

Funciones en sql

Funciones

  • Implementar una función que devuelva el número de participantes en el campeonato de AJEDREZ
Escribimos en el Query:
CREATE FUNCTION Num_Part_Campeonato()
RETURNS INT
BEGIN

    DECLARE @N INT
    SELECT @N = COUNT(*)
    FROM PARTICIPANTE_HOTEL PH

 RETURN @N    
END 
Luego realizamos la consulta:
SELECT dbo.Num_Part_Campeonato() 'CantPart'
  • Implementar una función que devuelva la lista de participantes en el campeonato de AJEDREZ
Escribimos en el Query:
CREATE FUNCTION LIST_PARTICIPANTE_CAMPEONATO()
RETURNS TABLE
AS
    RETURN SELECT *FROM PARTICIPANTE P
GO
Luego realizamos la consulta:
SELECT *FROM dbo.LIST_PARTICIPANTE_CAMPEONATO()
  • Implementar una función que devuelva el número de equipos en los que participo un jugador en CAMPEONATOEscribimos en el Query: 
    CREATE FUNCTION Num_Equipos_Jugador(@CODIGO char(3))
    RETURNS INT
    BEGIN
    
        DECLARE @N INT
        SELECT @N = COUNT(*)
        FROM JUG_EQ_CAMP J
        WHERE J.C_Jugador = @CODIGO
    
     RETURN @N    
    END
    Luego realizamos la consulta:
    SELECT dbo.Num_Equipos_Jugador ('J01')
    
    
  • Implementar una función que devuelva la lista de equipos en los que participo un jugador en CAMPEONATOEscribimos en el Query:
    CREATE FUNCTION LIST_EQUIPOS_JUGADOR(@CODIGO CHAR(3))
    RETURNS TABLE
    AS
        RETURN SELECT C_EQUIPO FROM JUG_EQ_CAMP J WHERE
        J.C_JUGADOR = @CODIGO
    GO
    Luego realizamos la consulta:
    SELECT *FROM dbo.LIST_EQUIPOS_JUGADOR('J01')ll