Sei sulla pagina 1di 3

GUIA DE LABORATORIO N 03 1.

OBJETIVO El desarrollo de la gua de laboratorio N 03, busca lograr los siguientes objetivos en el participante: Procedimientos almacenados con parmetros de salida Utilizar los procedimientos almacenados para facilitar consultas en SQL Server

2. TEMAS A DESARROLLAR La gua de laboratorio N 02 desarrolla los siguientes temas: a) Definir procedimientos almacenados b) Crear procedimientos almacenados c) Ejecutar procedimientos almacenados Antes de iniciar el desarrollo de la gua de laboratorio N 02, recordamos revisar el documento de GUIA PRACTICA DE SQL-II.
Nota

3. DESARROLLO DEL CASO PRCTICO Para desarrollar el Caso Prctico de la Unidad 03 utilice base de datos BDNotas

4. Procedimientos almacenados con parmetros de salida Los procedimientos almacenados pueden recibir y devolver informacin; para ello se emplean parmetros, de entrada y salida, respectivamente. CREATE PROC[EDURE] <Nombre Procedimiento> [ {@parmetro tipoDatos} [= predeterminado] [OUTPUT] ] [,...n] [WITH { CP1

RECOMPILE | ENCRYPTION } ] AS Sentencias SQL [...n] Ejemplo simple: se realiza select de tabla persona, y se calcula el promedio de las edades de todas las personas. Ese valor se guarda en parametro de salida. CREATE PROCEDURE ProcPromEdad(@prom int output) AS SELECT Nombres, DNI, datediff(year, Fecnac, getdate()) FROM Alumnos SELECT @prom=avg(datediff(year, Fecnac, getdate())) FROM Alumnos Al ejecutar el procedimiento, se crea una variable que guarda el contenido del parmetro de salida, puesto que sino, se pierde (es local al procedimiento). DECLARE @promedio int EXECUTE ProcPromEdad @prom=@promedio OUTPUT IF @promedio<20 select 'El promedio de edad de estas personas es menor a 20: ' +cast(@promedio as varchar) ELSE select'El promedio de edad de estas personas es mayor de 20: ' +cast(@promedio as varchar) Con parmetros de entrada y parmetros de salida PA que devuelve el costo bsico de una asignatura pasada como parmetro de entrada. Se devuelve en el parmetro de salida. CREATE PROCEDURE ProcCostoCurso @Curso varchar(45), @Coste int output AS IF (SELECT COUNT(*) FROM Curso WHERE Curso=@Curso) = 0 PRINT 'no existe asignatura' ELSE SELECT @Coste=Precio FROM Curso WHERE Curso=@Curso Al ejecutar el procedimiento, se crea una variable que guarda el contenido del parmetro de salida, puesto que sino, se pierde (es local al procedimiento).

CP2

DECLARE @cos int EXEC ProcCostoCurso 'PRODUCCION AUDIOVISUAL', @Coste=@cos output IF @cos>30 PRINT 'asignatura muy cara: '+cast(@cos as varchar) ELSE PRINT 'precio asignatura esta ok: '+cast(@cos as varchar) Lo mismo usando adems RETURN CREATE PROCEDURE ProcCostoCurso2 @Curso varchar(45), @Coste int output AS IF (SELECT COUNT(*) FROM Curso WHERE Curso=@Curso) = 0 RETURN(1) ELSE SELECT @Coste=Precio from Curso where Curso=@Curso RETURN(0) Al ejecutar el procedimiento, se crea una variable que guarda el contenido del parmetro de salida, puesto que sino, se pierde (es local al procedimiento). DECLARE @cos int, @est int EXEC @est=ProcCostoCurso2 'PRODUCCION AUDIOVISUAL', @Coste=@cos output IF @est=0 BEGIN PRINT 'ASIGNATURA NO EXISTE' IF @cos>30 PRINT 'ASIGNATURA MUY CARA: '+cast(@cos as varchar) ELSE PRINT 'PRECIO DE LA ASIGNATURA ESTA OK: '+cast(@cos as varchar) END ELSE IF @est=1 PRINT 'NO EXISTE ESTA ASIGNATURA'

CP3

Potrebbero piacerti anche