CREANDO PROCEDURES
SEMANA 6
--------------------------
use Logistica
go
--
--Creando un Procedimiento de Almacenad
--Lista la tabla Cliente
create procedure sp_listad_ventas
as
select * from Ventas
--Ejecutando el procedimiento
--3 formas
execute sp_listad_ventas
exec sp_listad_ventas
sp_listad_ventas
--------------------------
--Creacion de un procedimiento lista 2 talas, agencia y vendedor
create procedure sp_listado_tablas
as
select * from Agencia
select * from Vendedor
--ejecutar el procedimiento de almacenado
sp_listado_tablas
----
--Crear un procedimiento que permita listar 2 tablas --ERROR MUY COMUN
create procedure sp_listado_tablas2
as
select * from Agencia
select * from Vendedor
exec sp_listado_tablas2
--ERROR ESTO GENERA UN BUCLE INFINITO
--solucionando
--eliminacion del procedimiento almacenado
drop procedure sp_listado_tablas2
--Modificando un procedimiento existente
alter procedure sp_listado_tablas2
as
select * from Agencia
select * from Vendedor
--invocacion correcta
exec sp_listado_tablas2
--
--Invocar dentro de un procedimiento de almacenado a otros SPs
create procedure sp_listado_todos
as
exec sp_listad_ventas
exec sp_listado_tablas
--ejecucion del procedimiento
sp_listado_todos
--
--Procedimientos con parametros listar los datos de una agencia determinada
create procedure sp_listado_agencia
@agencia varchar(2)
as
select * from Agencia where c_agencia=@agencia
--ejecutar el procedimiento de almacenado
exec sp_listado_agencia '06'
--
--
--Crear Procedimiento con los datos generales
create procedure sp_datos_ventas
@cod_agencia varchar(2)
as
select vta.n_item,ag.n_agencia,al.n_almacen,p.n_producto,v.n_vendedor,vta.mto_total
from Ventas vta,agencia ag,almacen al,Producto p,Vendedor v
where vta.c_agencia=ag.c_agencia and vta.c_almacen=al.c_almacen and vta.c_producto=p.c_producto
and vta.c_vendedor=v.c_vendedor and vta.c_agencia=@cod_agencia
--ejecutar el procedimiento
exec sp_datos_ventas '01'
---
select * from Almacen
select * from Ventas
select * from Vendedor
select * from Producto
select * from Agencia
--
--creacion de un procedimiento utilizando 2 parametros
create procedure sp_datos
@agencia varchar(2),
@almacen varchar(2)
as
select * from Ventas where c_agencia=@agencia and c_almacen=@almacen
--ejecucion
exec sp_datos '01','A1'
--
--creando un procedimiento que actualice su monto logrado por agencia
select * from Agencia
update Agencia set m_logrado=0
create procedure sp_actualiza_agencia
@agen varchar(2),
@mto money
as
update Agencia
set m_logrado=m_logrado + @mto where c_agencia=@agen
--------------------
--ejecutando
exec sp_actualiza_agencia '04',2153
--
select * from Agencia
--
--actualizar el stock de un producto y de una agencia determinada
--parametros --> cod_prod , cod_alm y stock
select * from Producto
--
create procedure sp_actualiza_stock
@codpro varchar (2),
@codalm varchar(2),
@stock int
as
update Producto
set c_stock=@stock where c_producto=@codpro and c_almacen=@codalm
--
exec sp_actualiza_stock 'P1','A1',100
--
--Actualizar todos los m_vendido de la tabla vendedor de aquellos que empiecen con las letras
-- L o J actualizar el moto vendido ingresado
--where n_vendedor like '[L,J]%'
select * from vendedor
--
create procedure sp_actualiza_vendido
@mvendido int
as
update vendedor set m_vendido=@mvendido where n_vendedor like '[L,J]%'
--
exec sp_actualiza_vendido '200'
---------------------------
--OTRA FORMA PERO IGUAL
Create Procedure sp_listado_nombre
@nom varchar(20),
@monto money
as
Update vendedor Set m_vendido = m_vendido + @monto
where n_vendedor like '['+@nom+']%'
-- ********************************************************************
exec sp_listado_nombre 'J,L',1785 |