Escolar Documentos
Profissional Documentos
Cultura Documentos
Procedimientos Almacenados
Objetivos:
Temas:
Introduccin a los procedimientos almacenados.
Creacin, ejecucin, modificacin y eliminacin de procedimientos
almacenados.
Utilizacin de parmetros en los procedimientos almacenados.
Implementacin de
desencadenadores
Objetivos:
Temas:
Laboratorio N 01
Objetivos: Creacin, modificacin, eliminacin y ejecucin de Procedimientos
almacenados en Microsoft SQL Server.
--activa la bd pubs
use pubs
--ejecuta una consulta con parametro definido
declare @level tinyint
set @level = 35
select * from pubs.dbo.employee where job_lvl = @level
/*
Ejecuta una instruccin o proceso por lotes de Transact-SQL
que puede utilizarse muchas veces
*/
go
execute sp_executesql
N'select * from pubs.dbo.employee where job_lvl = @level',
N'@level tinyint',
@level = 35
go
/*--------Procedimientos almacenados de usuario --------*/
--Activa la base de datos ventas
USE VENTAS
GO
--VISUALIZA LOS SP EXISTENS DE SISTEMA Y DE USUARIO
sp_stored_procedures
GO
--1
--RECUPERA LA CANTIDAD DE REGISTROS
CREATE PROCEDURE CANTREGCATE --CANTIDAD DE REGISTROS
AS
SELECT count(*)FROM categoria
GO
--EJECUCION DEL PROCEDIMIENTO ALMACENADO
SP_CANTREGCATE
GO
--MODIFICACION
ALTER PROC CANTREGCATE
AS
SELECT count(*) AS 'CantRegCategia'
FROM categoria
GO
--VISUALIZA EL CONTEXTO DEL SP
sp_helptext CANTREGCATE
GO
--EJECUCION DEL PROCEDIMIENTO ALMACENADO
CANTREGCATE
--ELIMINACION
DROP PROC CANTREGCATE
GO
--2
/*
MUESTRA LOS DATOS DE LOS CLIENTES QUE SE LES
A EMITIDO FACTURAS.
*/
CREATE PROCEDURE FACTURAS_EMPLEADO
AS
SELECT F.idfactura,C.nombres,F.idempleado,
F.fecha,F.tpago
FROM Facturas as F
INNER JOIN Clientes as C
ON F.idcliente = C.idcliente
GO
--EJECUCION 1 DEL PROCEDIMIENTO ALMACENADO
FACTURAS_EMPLEADO
GO
--EJECUCION 2 DEL PROCEDIMIENTO ALMACENADO
EXEC FACTURAS_EMPLEADO
GO
--3
/*
MUESTRA LOS DATOS DE LOS CLIENTES QUE SE LES
A EMITIDO FACTURAS Y DE LOS EMPLEADOS
QUE GENERARON DICHA FACTURA.
*/
CREATE PROCEDURE FACTURAS_CLIENTES
AS
SELECT F.idfactura,C.nombres as 'Nombre del Cliente',
E.nombre as 'Nombre del Empleado',F.fecha,F.tpago
FROM Facturas as F
INNER JOIN Clientes as C
ON F.idcliente = C.idcliente
INNER JOIN Empleado as E
ON F.idempleado = E.idempleado
ORDER BY F.idfactura
GO
--EJECUCION 1 DEL PROCEDIMIENTO ALMACENADO
FACTURAS_CLIENTES
GO
--EJECUCION 2 DEL PROCEDIMIENTO ALMACENADO
EXEC FACTURAS_CLIENTES
GO
--4
/*
MUESTRA LOS CLIENTES A QUIENES SE LES
EMITIO FACTURAS Y AQUIENES NO.
*/
GO
/*--EJECUCION CON PARAMETROS DE ENTRADA
Y VALORES PREDETERMINADOS
*/
--7
/*
Escriba una sentencia sql que presente cuantas
unidades existen por cada categoria.
*/
CREATE PROCEDURE EXISTENCIACATEGORIAS
@P_IDCATEGORIA CHAR(6)='IMP001'
AS
SELECT A.idcategoria,SUM(A.STOCK)
FROM ARTICULOS AS A INNER JOIN CATEGORIA AS C
ON A.IDCATEGORIA=C.IDCATEGORIA
GROUP BY A.idcategoria
HAVING A.IDCATEGORIA=@P_IDCATEGORIA
GO
--EJECUCION 1 DEL PROCEDIMIENTO ALMACENADO
EXISTENCIACATEGORIAS
GO
--EJECUCION 2 DEL PROCEDIMIENTO ALMACENADO
EXEC EXISTENCIACATEGORIAS
GO
--8
/*
Escriba una sentencia sql que presente cuantas
unidades existen por cada categoria y que son
mayores a 30.
*/
CREATE PROCEDURE EXISTENCIACATEGORIASSTOCK
@P_sctock int
AS
SELECT A.idcategoria,SUM(A.STOCK)
FROM ARTICULOS AS A INNER JOIN CATEGORIA AS C
ON A.IDCATEGORIA=C.IDCATEGORIA
GROUP BY A.idcategoria
HAVING SUM(A.STOCK) > @P_sctock
GO
--EJECUCION 1 DEL PROCEDIMIENTO ALMACENADO
EXISTENCIACATEGORIASSTOCK 30
GO
--EJECUCION 2 DEL PROCEDIMIENTO ALMACENADO
EXEC EXISTENCIACATEGORIASSTOCK 30
GO
--9
/*
PROC ALM, PERMITE REALIZAR UNA EDICION DE DATOS
EN LA TABLA CATEGORIAS
*/
--9
CREATE PROCEDURE MANT_CATE
@pind int,@pidcategoria varchar(6),@pnombre varchar(20)
AS
if @pind=1 --inserta
BEGIN
INSERT INTO Categoria
(Idcategoria,nombre)
VALUES (@pidcategoria,@pnombre)
END
if @pind=2 --Actualiza
BEGIN
UPDATE Categoria
SET nombre=@pnombre
WHERE Idcategoria=@pidcategoria
END
if @pind=3 --Eliminar
BEGIN
DELETE FROM Categoria WHERE nombre=@pnombre
END
GO
--EJECUCION DEL PROCEDIMIENTO ALMACENADO
EXEC MANT_CATE 1,'PAR001','PARLANTES'
GO
--VERIFICAR LOS DATOS
SELECT * FROM CATEGORIA
GO
--10
/*
PARAMETRO DE SALIDA PARA RECUPERAR EL STOCK TOTAL
DE LA TABLA ARTICULOS.
*/
CREATE PROCEDURE ARTICULOSSTOCKTOTAL_PSALIDA
@STOCKTOTAL INT OUTPUT
AS
SELECT SUM(A.STOCK)
FROM ARTICULOS AS A
GO
--EJECUCION DEL PROCEDIMIENTO ALMACENADO
DECLARE @VSTOCKTOTAL INT
EXEC ARTICULOSSTOCKTOTAL_PSALIDA @VSTOCKTOTAL OUTPUT