Sei sulla pagina 1di 6

OCEDIMIENTOS ALMACENADOS UNIVERSIDAD SAN PEDRO ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA Y DE SISTEMASBASE DE DATOS II ING.

FREDY RIVERA MONTERO Procedimientos almacenados en Transact SQL Un procedimiento es un programa dentro de la base de datos que ejecuta una accin o conjunto deacciones 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 conjuntosde resultados.Para crear un procedimiento almacenado debemos emplear la sentencia CREATE PROCEDURE . CREATE PROCEDURE <nombre_procedure>[@param1 <tipo>, ...] AS -- Sentencias del procedurePara 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, denominadosp_listaalumnos, que lista los registros de la tabla alumno: CREATE PROCEDURE sp_listaalumnos ASSELECT *FROM ALUMNOSEl siguiente ejemplo muestra un procedimiento almacenado que solicita parmetros de entrada, denominadosp_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) AS INSERT INTO ALUMNOS VALUES (@codigo,@apellidos,@nombres,@sexo)

Return EXEC sp_addalumno 2120041070,RUIZ MAURICIO,MARIA MARISOL,F

OUTPUT 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

DECLARE @pf int EXEC sp_obtenerpromediofinal 2008108030,BD2,@pf OUTPUT PRINT @pf

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)

CREATE PROCEDURE sp_insertaalumnos @codigo char(10), @apellidos varchar(50), @nombres varchar(50), @sexo char(1) AS BEGININ SERT INTO alumnos VALUES(@codigo,@apellidos,@nombres,@sexo) END

CREATE PROCEDURE sp_insertacursos @idcurso char(4), @descripcion varchar(50), @ciclo varchar(2) AS BEGIN INSERT INTO cursos VALUES(@idcurso,@descripcion,@ciclo) END

Empleando este procedimiento almacenado los siguientes datos:c) 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) CREATE PROCEDURE sp_insertanotas @idmat char(10), @idcurso char(4), @pf int AS BEGIN INSERT INTO notas VALUES(@idmat,@idcurso,@pf) END

Crear un procedimiento almacenado que muestre el cdigo de matrcula, apellidos y nombres delalumno, descripcin del curso, ciclo, promedio final de todos los alumnos.2. Crear un procedimiento almacenado que muestre el cdigo de matrcula, apellidos y nombres delalumno, descripcin del curso, ciclo, promedio final de un alumno en particular.3. Crear un procedimiento almacenado que liste los cursos ordene en orden alfabtico4. Crear un procedimiento almacenado que liste los alumnos ordene en orden alfabtico5. Agregar la columna fecha de nacimiento en la tabla de alumnos, luego ingrese la fechacorrespondiente a cada alumno.Crear un procedimiento almacenado para hacer dicha tarea. 6.Crear procedimiento almacenado que liste por ao de ingreso los alumnos. 7.Sacar todos los empleados que se dieron de alta entre una determinada fecha inicial y fecha final yque 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 nmerode 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.

BEGIN TRANSACTION -- O solo BEGIN TRAN BEGIN TRY /* Descontamos el importe de la cuenta origen */ UPDATE CUENTAS SET SALDO=SALDO-@importe WHERE NUMCUENTA=@CuentaOrigen /* Registramos el movimiento */ INSERT INTO MOVIMIENTOS(IDCUENTA,SALDO_ANTERIOR,SALDO_POSTERIOR, IMPORTE,FXMOVIMIENTO) SELECT IDCUENTA,SALDO+@importe,SALDO,@importe, getdate() FROM CUENTAS WHERE NUMCUENTA=@CuentaOrigen /* Incrementamos el importe de la cuenta destino */ UPDATE CUENTAS SET SALDO=SALDO+@importe WHERE NUMCUENTA=@CuentaDestino /* Registramos el movimiento */ INSERT INTO MOVIMIENTOS

Potrebbero piacerti anche