Está en la página 1de 2

EJERCICIOS STORED PROCEDURES Y TRIGGERS EN MICROSOFT SQL

SERVER

1. Tenemos la tabla PERSONA (id_persona, nombres, apellido_paterno, apellido_materno,


fecha_nacimiento), realizar un stored procedure para insertar 1 persona cada vez que se
mande llamar y que regrese la palabra “EXITOSO” y que muestre el contenido actual de toda
la tabla con el nombre y apellidos, primero apellidos y luego nombres, concatenados en un
solo campo ordenados alfabéticamente y luego la edad actual. Mostrar la fecha de
nacimiento en un formato como por ejemplo: 18 de mayo de 2018, no mostrarlo como “2018-
05-18”. Mostrar la fecha actual también. Ejemplo de la salida esperada:

NOMBRE EDAD FECHA DE NACIMIENTO FECHA ACTUAL


PEREZ GARCIA JUAN 19 01 DE ENERO DE 2000 2019-11-25

2. De cualquier base de datos que tengas que contenga al menos 2 tablas, dales permisos en una
y restricciones en la otra a un nuevo login, hacer un stored procedure que verifique los permisos
que tiene ese login (ingresar con él en una ventana de query) y al mandar llamar el stored
procedure nos debe mostrar los permisos de select, insert, update o delete que tiene sobre las
tablas de la base de datos. Mostrar antes de los permisos la hora actual, luego los permisos y
luego de nuevo la hora actual, para verificar cuando tardó en ejecutarse la consulta. Mostrar
solo las horas, no las fechas. Adicionalmente mostrar la hora de inicio de sesión, el login de sql,
el nombre del host y del usuario de Windows.

3. Tenemos la tabla CLIENTE(Id_cliente, nombre, fecha_nacimiento, fecha_alta, activo, login,


windowsuser) y tenemos un excel con NOMBRE Y FECHA DE NACIMIENTO con al menos 20
renglones:
Migrar el Excel a una tabla en una base de datos.
Crear la tabla cliente.
Hacer un stored procedure que haga la migración de los clientes. La fecha de alta será la
correspondiente al día y hora que se está ejecutando el stored procedure, y se debe guardar
por default el campo activo = ‘T’, el login correspondiente al login que está ejecutando el
procedimiento, algo similar con el usuario de Windows que se deberá guardar en el campo
windowsuser. Al final mostrar el contenido de toda la tabla, las fechas con formato de inglés
americano.

4. Teniendo las tablas:

o Empleado (id_empleado, nombre, apellido_paterno, apellido_materno,


fecha_alta_empleado, sueldo)
o Nomina (Id_transacion, id_empleado, monto, fecha_deposito)
o Bitácora (contador, id_empleado, nombre, apellido_paterno, apellido_materno, monto,
fecha_deposito, login, windowsuser, host, fecha_bitacora)

I. Realizar un stored procedure que de alta un empleado en la tabla empleado, que


verifique el nombre, si no existe que se proceda con la inserción. Si el empleado existe,
que regrese un mensaje que diga que ya existe una persona con el mismo nombre.
MCES AMAURY CORIA RAMIREZ 1
II. Realizar un stored procedure que inserte un depósito a nómina del empleado, en el
campo de fecha_deposito se debe insertar la fecha y hora, es decir, el campo debe ser
tipo date time. Se debe poner el monto igual al sueldo que le corresponda al empleado.
III. Hacer un trigger para insert en la tabla nómina, cada vez que haya un insert de un
depósito que se inserte una tupla en la tabla bitácora, con todos los campos que tiene
la tabla bitácora, en el campo fecha_bitacora se debe insertar el getdate(), con lo cual
veremos la diferencia en segundos o milisegundos entre la fecha_deposito y la
fecha_bitacora, esta última corresponderá al momento exacto en la que la tupla se
inserte en la tabla bitácora. Fecha_bitacora también deberá ser tipo date time igual que
fecha_deposito.
IV. Hacer un trigger para update en la tabla empleado, cuando se haga una actualización
del nombre o apellido, que el trigger compare el antes y después del nombre y con
cualquier pequeña diferencia, que inserte DOS TUPLAS en la tabla bitácora, una con el
nombre anterior y otra con el nuevo, en este caso los campos monto y fecha_deposito
deben llegar en NULL, el resto de los campos si deben llenarse.
V. Hacer un stored procedure que simule la inserción de la nómina completa de todos los
empleados que existan dentro de la tabla empleado en ese momento, con el sueldo
correspondiente a cada uno.

FUNCIONES, PROCEDURES DE SISTEMA, TABLAS O INSTRUCCIONES QUE PUEDEN AYUDAR EN SQL SERVER
DE MICROSOFT:
LTRIM() RTRIM() UPPER() CONCAT() DATEPART()
GETDATE() PERMISSIONS() OBJECT_ID() CHAR() ASCII()
SP_WHO SELECT @@SPID SYSDATETIME() SET DATEFORMAT
SET LANGUAGE
TABLA SYSOBJECTS DE LA BASE DE DATOS MASTER (checar que campos tiene)
TABLA SYSPROCESSES DE LA BASE DE DATOS MASTER (checar que campos tiene)
Recuerda tomar en cuenta los campos que deben ser llaves primarias y auto incrementables.
Para los triggers recuerda usar las tablas INSERTED y/o DELETED.

ENTREGABLES:
1. Trabajo de máximo 5 integrantes. El día lunes 2 de diciembre a las 23:59 hrs a más tardar, subir
a Schoology un PDF que contenga:
a. Los enunciados de los problemas que se solicitan.
b. El código de cada stored procedure y trigger.
c. Pantallas del paso a paso de la ejecución de cada uno, demostrando de manera clara
el funcionamiento. Lo mismo para el proceso de migración del Excel.
d. Recuerden especificar en la portada los nombres de los integrantes.
2. En clase el martes 3 de diciembre pediré a 1 integrante de cada equipo que pase para
presentarme alguno de los stored procedures, lo ejecutará para demostrar que se obtienen los
resultados esperados, un procedimiento que no muestra el resultado esperado será incorrecto.

MCES AMAURY CORIA RAMIREZ 2

También podría gustarte