LA LIGA OFFICIAL WEBSITE
Web de los estudiantes de técnico en ingenieria de sistemas y redes

| LigaBlog | ITCA Official Site

LigaHelp

La Liga ITCA

Ayuda de Base de Datos

Procedimientos Almacenados

Hola, aqui una practica de bases de datos, en donde intentamos explicar los procedimientos
almacenados. Todo texto que se encuentre despues de (--) es un comentario, no es necesario
que se lo aprendan, solo es para explicar el codigo. Esperamos que les sirva:

-------------------------------------------------------------------------------------------------------------

-- abriendo base de datos PRACTICA9
use practica9
-- Procedimientos almacenados, son programas que estan almacenados en la base de datos,
-- son recidentes en el servidor.
-- Sql, usa el leguaje de programacion TRANSACT - SQL
-- Para crear un Programa(procedimiento) usamos el comando proc
create proc programa1
-- aqui van los parametros si los hay
-- escribimos AS para iniciar el codigo del programa
as
-- Inicio
-- la declaracion de variables es de forma explicita
-- para declarar las variables se usa "DECLARE @varname tipo"
declare @xcalculo numeric
-- para asignar un valor a la variable usamos SET
set @xcalculo = 23
-- para imprimir mensajes o valores de variables usamos PRINT
print 'El valor de la variable es:'
print @xcalculo

-- tambien se le asigna valor a la variable con SELECT
select @xcalculo = sum(cantidad) from detalle_pedido
-- despues de o "=" se debe usar una funcion de agregado 100pre
print 'Ahora tiene'
print @xcalculo

-- Fin

-- Para ejecutar un programa, lo mandamos a llamar con EXEC PROGRAMNAME
exec programa1
-------------------------------------------------------------------------------------------------------------

-- Ejercicios

-- 1. Crear un Procedimiento almacenado, que reciba de parámetro un Número de Pedido y que
-- actualice el total de venta, en la tabla Pedido, de acuerdo a la sumatoria de la cantidad de
-- productos por el precio de venta de cada uno.
-- Solucion:
--para el analisis vemos el contenido de las tablas:
select * from pedido
-- cambiamos el contenido de una columna
update pedido set total = null
select * from detalle_pedido

-- inicio
create proc ejercicio1
-- parametros: son variables que estan en la cabecera del programa
-- medios que usan los programas para poderce comunicar con los medios externos
@xorden char(10)
-- cuerpo del programa
as
-- declaracion de variables
declare @xtotal numeric
-- calcular la suma de los productos en la orden
select @xtotal = sum(cantidad * precio_venta) from productos, detalle_pedido
where id_producto = id_prod and num_orden = @xorden

-- validamos si la orden existe o no
if(@xtotal is null)
print 'La Orden' + @xorden + 'No Existe'
else

-- para meter varias instrucciones se usa la llave de apretura BEGIN
begin
update pedido set total=@xtotal where num_orden = @xorden

-- para terminar usamos la llave de cierre END
end
-- fin del programa

-- ahora ejecuto el programa con el parametro de valor 06
exec ejercicio1 '06'
--Vemos el resultado
select * from pedido
-- ahora ejecuto el programa con el parametro de valor 02
exec ejercicio1 '02'
--Vemos el resultado
select * from pedido
-- ahora ejecuto el programa con el parametro de valor 05
exec ejercicio1 '05'
--Vemos el resultado
select * from pedido

-------------------------------------------------------------------------------------------------------------

--2. Crear un Procedimiento almacenado, que reciba de parámetro el Id de oficina y que actualice
-- la venta total de cada oficina.
-- Solucion:
--para el analisis vemos el contenido de las tablas:
select * from vendedores
select * from sucursales

-- cambiamos el contenido de una columna
update sucursales set venta_total = null

-- para borrar el programa DROP PROC PROGRAMNAME
-- para corregir algun error, en vez de borrar el programa ALTER PROC PROGRAMNAME

create proc ejercicio2
@idoff char(3)
as

-- inicio
declare @sumtotal numeric
select @sumtotal = sum(venta_neta) from vendedores a, sucursales b
where a.id_oficina = b.id_oficina and b.id_oficina = @idoff
if(@sumtotal is null)
print 'La Oficina' + @idoff + 'No Existe'
else
begin
update sucursales set venta_total=@sumtotal where id_oficina = @idoff
end

-- fin

-- ejecutamos el programa
exec ejercicio2 '101'
-- vemos el resultado
select * from sucursales

---------------------------------------------------------------------------------------------------

Sobre Nosotros | Contáctenos | ©2006-2007 La Liga ITCA