You are on page 1of 9

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

TEMA N 02 PROCEDIMIENTOS ALMACENADOS

BASE DE DATOS II

ING. FREDY RIVERA MONTERO

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

Procedimientos almacenados en Transact SQL


Un procedimiento es un programa dentro de la base de datos que ejecuta una accin o conjunto de acciones especficas. Un procedimiento tiene un nombre, un conjunto de parmetros (opcional) y un bloque de cdigo. En Transact SQL los procedimientos almacenados pueden devolver valores (numrico entero) o conjuntos de resultados. Para crear un procedimiento almacenado debemos emplear la sentencia CREATE PROCEDURE. CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...] AS -- Sentencias del procedure Para modificar un procedimiento almacenado debemos emplear la sentencia ALTER PROCEDURE. ALTER PROCEDURE <nombre_procedure> [@param1 <tipo>, ...] AS -- Sentencias del procedure

Para eliminar un procedimiento almacenado debemos emplear la sentencia DROP PROCEDURE


DROP PROCEDURE <nombre_procedure> El siguiente ejemplo muestra un procedimiento almacenado sin parmetros de entrada, denominado sp_listaalumnos, que lista los registros de la tabla alumno: CREATE PROCEDURE sp_listaalumnos AS SELECT *FROM ALUMNOS El siguiente ejemplo muestra un procedimiento almacenado que solicita parmetros de entrada, denominado sp_addalumno que inserta un registro en la tabla "ALUMNOS". CREATE PROCEDURE sp_addalumno @codigo char(10), @apellidos varchar(50), @nombres varchar(50), @sexo char(1)

BASE DE DATOS II

ING. FREDY RIVERA MONTERO

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

AS INSERT INTO ALUMNOS VALUES(@codigo,@apellidos,@nombres,@sexo) Para la ejecutar un procedimiento almacenado debemos utilizar la sentencia EXEC. Cuando la ejecucin del procedimiento almacenado es la primera instruccin del lote, podemos omitir el uso de EXEC. El siguiente ejemplo muestra la ejecucin del procedimiento almacenado anterior. EXEC <nombre_procedure> EXEC sp_addalumno 2120041070,RUIZ MAURICIO,MARIA MARISOL,F Siempre es deseable que las instrucciones del procedure estn dentro de un bloque TRY CATCH y controlados por una transaccin. ALTER PROCEDURE sp_addalumno @codigo char(10), @apellidos varchar(50), @nombres varchar(50), @sexo char(1) AS BEGIN TRY BEGIN TRAN INSERT INTO ALUMNOS(IdMat,Apellidos,Nombres,Sexo) VALUES(@codigo,@apellidos,@nombres,@sexo) COMMIT END TRY BEGIN CATCH ROLLBACK PRINT ERROR_MESSAGE() END CATCH

BASE DE DATOS II

ING. FREDY RIVERA MONTERO

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

Si queremos que los parmetros de un procedimiento almacenado sean de entrada-salida debemos especificarlo a travs de la palabra clave OUTPUT , tanto en la definicin del procedure como en la ejecucin. El siguiente ejemplo muestra la definicin de un procedure con parmetros de salida. CREATE PROCEDURE sp_obtenerpromediofinal @codigo char(10), @idcurso char(4), @pf int OUTPUT AS BEGIN SELECT @pf=Prom_Final from NOTAS where IdMat=@codigo and IdCurso=@idcurso END Ejecutamos el ejemplo anterior como sigue DECLARE @pf int EXEC sp_obtenerpromediofinal 2008108030,BD2,@pf OUTPUT PRINT @pf TAREA PROXIMA CLASE Investigar sobre desencadenadores o triggers en SQL SERVER, ORACLE y MySQL.

BASE DE DATOS II

ING. FREDY RIVERA MONTERO

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

LABORATORIO N 2 Crear en el SQL SERVER 2008., la base de datos NOTAS que contenga las tablas siguientes: ALUMNOS (IdMat char(10), Apellidos varchar(50), Nombres varchar(50), Sexo char(1) IdMat es primary key CURSOS (IdCurso char(4), Descripcion varchar(50), Ciclo char(2)) IdCurso es primary key MATRICULA (IdMat char(10), IdCurso char(4) NOTAS (IdMat char(10),IdCurso char(4), Prom_Final int) 1. Crear los siguientes procedimientos almacenados: a) sp_insertaalumnos CREATE PROCEDURE sp_insertaalumnos @codigo char(10), @apellidos varchar(50), @nombres varchar(50), @sexo char(1) AS BEGIN INSERT INTO alumnos VALUES(@codigo,@apellidos,@nombres,@sexo) END Empleando el procedimiento almacenado anterior, insertar los datos siguientes

b) sp_insertacursos CREATE PROCEDURE sp_insertacursos @idcurso char(4),

BASE DE DATOS II

ING. FREDY RIVERA MONTERO

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

@descripcion varchar(50), @ciclo varchar(2) AS BEGIN INSERT INTO cursos VALUES(@idcurso,@descripcion,@ciclo) END Empleando este procedimiento almacenado los siguientes datos:

c) sp_insertamat CREATE PROCEDURE sp_insertamat @idmat char(10), @idcurso AS BEGIN INSERT INTO matricula VALUES(@idmat,@idcurso) END Empleando este procedimiento, proceda a matricular a los alumnos de a) d) sp_insertanotas CREATE PROCEDURE sp_insertanotas @idmat char(10), @idcurso char(4), @pf int AS BEGIN INSERT INTO notas VALUES(@idmat,@idcurso,@pf) END Empleando este procedimiento, ingrese las notas. Desarrollar lo siguiente: 1. Crear un procedimiento almacenado que muestre el cdigo de matrcula, apellidos y nombres del alumno, descripcin del curso, ciclo, promedio final de todos los alumnos. 2. Crear un procedimiento almacenado que muestre el cdigo de matrcula, apellidos y nombres del alumno, descripcin del curso, ciclo, promedio final de un alumno en particular. 3. Crear un procedimiento almacenado que liste los cursos ordene en orden alfabtico 4. Crear un procedimiento almacenado que liste los alumnos ordene en orden alfabtico 5. Agregar la columna fecha de nacimiento en la tabla de alumnos, luego ingrese la fecha correspondiente a cada alumno. Crear un procedimiento almacenado para hacer dicha tarea. 6. Crear procedimiento almacenado que liste por ao de ingreso los alumnos.

BASE DE DATOS II

ING. FREDY RIVERA MONTERO

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

Empleando la base de datos HOSPITAL desarrollar las siguientes preguntas, debiendo presentarlas en el plazo establecido por el docente. 7. Sacar todos los empleados que se dieron de alta entre una determinada fecha inicial y fecha final y que pertenecen a un determinado departamento. 8. Crear procedimiento que inserte un empleado 9. Crear un procedimiento que recupere el nombre, nmero y nmero de personas a partir del nmero de departamento. 10. Crear un procedimiento que recupere el nmero departamento, el nombre y nmero de empleados, dndole como valor el nombre del departamento, si el nombre introducido no es vlido, mostraremos un mensaje informativo comunicndolo. 11. Crear un procedimiento para insertar un empleado de la plantilla del Hospital. Para poder insertar el empleado realizaremos restricciones: No podr estar repetido el nmero de empleado. Para insertar, lo haremos por el nombre del hospital y por el nombre de sala, si no existe la sala o el hospital, no insertaremos y lo informaremos. El oficio para insertar deber estar entre los que hay en la base de datos, al igual que el Turno. El salario no superar las 500.000 ptas. (Opcional) Podremos insertar por el cdigo del hospital o sala y por su nombre.

BASE DE DATOS II

ING. FREDY RIVERA MONTERO

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

Gua: PROCEDIMIENTOS ALMACENADOS


Alumno: Fecha: Maquina N

HOJA DE COTEJO: 2

EVALUACION
% CONOCIMIENTO Del 20 al 30% 1-4
Conocimiento deficente de los fundamentos teoricos

5.-7
Conocimiento y explicacin incompleta de los fundamentos tericos

8-10
Conocimiento completo y explicacin clara de los fundamentos tericos

NOTA

APLICACIN DEL CONOCIMIENTO

Del 40% al 60%

ACTITUD

Del 15% al 30%

No tiene Actitud propositiva y actitud con propuestas no proactiva aplicables al contenido de la gua .

Tiene actitud proactiva y sus propuestas son concretas.

TOTAL

100%

BASE DE DATOS II

ING. FREDY RIVERA MONTERO

UNIVERSIDAD SAN PEDRO

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMAS

BASE DE DATOS II

ING. FREDY RIVERA MONTERO