Está en la página 1de 4

Jos Alberto Garca Valencia

EK: 04
Grupo: B
10290834
Maestro: Ing. Juan Bernaldino Martinez Isabeles
TALLER DE BASES DE DATOS

NC:

Ejercicios de Procedimientos en SQLServer


PROCEDIMIENTOS
1. Procedimiento para mostrar el nombre del da de hoy.
CREATE PROCEDURE Dia_Hoy
AS
PRINT DATENAME(dw,GETDATE())
EXEC Dia_Hoy
2. Procedimiento que obtenga el nmero de das que faltan para que termine el ao.
CREATE PROCEDURE Num_DiasFaltantes
AS
PRINT DATENAME(dy,365-GETDATE())
EXEC Num_DiasFaltantes
3. Que muestre el nmero de alumnos registrados.
CREATE PROCEDURE Alumnos_Refistrados
AS
SELECT COUNT(*) AS[Total] FROM Alumnos
EXEC Alumnos_Refistrados
4. procedimiento para realizar bsquedas por el nombre del alumno, debe recibir como
parmetro de entrada el nombre del alumno.
CREATE PROCEDURE Busqueda_Alum @Cadena AS VARCHAR(15)
AS
SET @Cadena=@Cadena+'%'
SELECT Nombre FROM Alumnos
WHERE Nombre LIKE @Cadena
EXEC Busqueda_Alum 'Isaias'
5. procedimiento que reciba como parmetro una cadena y una opcin para realizar una
bsqueda en la tabla alumnos por ms de un campo (ejemplo: 1 nombre, 2 domicilio, 3..)
CREATE PROCEDURE Busqueda_AlumTabl @Cadena AS VARCHAR(15),@Opcion AS
INT
AS
SET @Cadena=@Cadena+'%'
IF @Opcion=1
BEGIN
SELECT * FROM Alumnos
WHERE Nombre LIKE @Cadena
END
IF @Opcion=2
BEGIN
SELECT * FROM Alumnos
WHERE Domicilio LIKE @Cadena
END

Jos Alberto Garca Valencia


EK: 04
Grupo: B
10290834
Maestro: Ing. Juan Bernaldino Martinez Isabeles

NC:

IF @Opcion=3
BEGIN
SELECT * FROM Alumnos
WHERE control LIKE @Cadena
END
EXEC Busqueda_AlumTabl 'Isaias',1
6. Procedimiento que utilice una vista para mostrar el nombre del alumno, la ciudad de
procedencia y el estado.
CREATE PROCEDURE Alum_Procedencia
AS
SELECT Alumnos.Nombre,Ciudades.Nom_Cd,Estados.Nom_Edo FROM (Ciudades INNER
JOIN Estados ON Ciudades.Id_Edo=Estados.Id_Edo) INNER JOIN Alumnos ON
Ciudades.Id_Ciud=Alumnos.Id_Ciud
EXEC Alum_Procedencia
SELECT * FROM Alum_Procedencia
7. Procedimiento que muestre la lista de mujeres, solo si son ms mujeres que hombres, de
no ser as, que muestre la lista de hombres.
CREATE PROCEDURE ListMujeres_Listhombres
AS
DECLARE @Mujer INT
SET @Mujer=(SELECT COUNT(Sexo) FROM Alumnos WHERE Sexo='F')
DECLARE @Hombre INT
SET @Hombre=(SELECT COUNT(Sexo) FROM Alumnos WHERE Sexo='M')
IF @Mujer>@Hombre
BEGIN
PRINT 'Son Mas Mujeres'
SELECT Nombre FROM Alumnos WHERE Sexo='F'
END
ELSE
BEGIN
PRINT 'Son Mas Hombres'
SELECT Nombre FROM Alumnos WHERE Sexo='M'
END
EXEC ListMujeres_Listhombres
8. Procedimiento que indique si la suma de las edades de las mujeres, es mayor, igual o
menor a la suma de las edades de los hombres.
CREATE PROCEDURE Suma_edades_MH
AS
DECLARE @Mujer INT
SET @Mujer=(SELECT SUM(Edad) FROM Alumnos WHERE Sexo='F')
DECLARE @Hombre INT
SET @Hombre=(SELECT SUM(Edad) FROM Alumnos WHERE Sexo='M')
IF @Mujer>@Hombre
BEGIN

Jos Alberto Garca Valencia


EK: 04
Grupo: B
10290834
Maestro: Ing. Juan Bernaldino Martinez Isabeles
PRINT 'La Suma de las edades de las Mujeres es mayor que la de los Hombres'
END
ELSE
IF @Mujer<@Hombre
BEGIN
PRINT 'La Suma de las edades de las Mujeres es menor que la de los Hombres'
END
ELSE
BEGIN
PRINT 'La Suma de las edades de las Mujeres es igual que la de los Hombres'
END
EXEC Suma_edades_MH

NC:

TRIGGERS
1. Que muestre un mensaje (El registro fue agregado correctamente) cuando se agregue
un registro en la tabla estados.
CREATE TRIGGER Msj_Agregar_Registro ON Estados
AFTER INSERT
AS
PRINT 'El Registro Fue Agregado Correctamente'
2. Que muestre un mensaje (El registro fue borrado exitosamente) cuando se elimine un
registro en la tabla estados.
CREATE TRIGGER Msj_Eliminar_Registro ON Estados
AFTER DELETE
AS
PRINT 'El Registro Fue Borrado Correctamente'
3. Realizar un Trigger que permita borrar nicamente a los alumnos que tengan menos de
18 aos de edad.
CREATE TRIGGER Borrar_Alumnos_edades18 ON Alumnos
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @X INT
SELECT @X=Edad FROM DELETED
IF @X>18
BEGIN
ROLLBACK
PRINT 'No Se Puede Eliminar'
END
END

Jos Alberto Garca Valencia


EK: 04
Grupo: B
NC:
10290834
Maestro: Ing. Juan Bernaldino Martinez Isabeles
4. Realizar un Trigger que permita agregar registros, unicamente, de alumnos de 18 aos o
ms.
CREATE TRIGGER Agregar_Registro_Mayor_18 ON Alumnos
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @X INT
SELECT @X=Edad FROM INSERTED
IF @X<18
BEGIN
ROLLBACK
PRINT 'No Se Puede Insertar'
END
END
5. Realizar un Trigger que permita borrar un registros de estado, nicamente cuando el
nmero de estados existente sea mayor o igual a 5.
CREATE TRIGGER Eliminar_Mayor_5 ON Estados
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @X INT
SELECT @X=COUNT(*) FROM DELETED
IF @X<5
BEGIN
ROLLBACK
PRINT 'No Se Puede Eliminar'
END
END