ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Creando_Package


Enviado por   •  27 de Octubre de 2016  •  Trabajo  •  409 Palabras (2 Páginas)  •  71 Visitas

Página 1 de 2

-- creacion del package nombre del pkg

CREATE OR REPLACE PACKAGE pkg_comision_vendedor AS

-- estamos llamando una funcion

FUNCTION fn_comision_mensual(

-- atributos o variables que vamos a utilizar

p_idvendedor NUMBER

, p_fecha VARCHAR2)

-- returnar una variable number

RETURN NUMBER;

-- vamos a cerrar el package

END pkg_comision_vendedor;

-- recuerde que el package es una caja en donde dentro de el podemos

-- llamar a triggers , procedimientos y funciones si uno estima conveniente

-- ahora debemos crear el cuerpo del pkg , en donde le vamos a decir que quiero es lo que haga

-- la diferencia con el codigo anterior se debe agragar en el encabezado la palabra body

CREATE OR REPLACE PACKAGE BODY pkg_comision_vendedor AS

FUNCTION fn_comision_mensual(

p_idvendedor NUMBER

, p_fecha VARCHAR2

) RETURN NUMBER

IS

v_total_com NUMBER(10); -- variable nueva

BEGIN

-- estamos ejecutando

SELECT SUM(valor_comision_boleta)

INTO v_total_com

FROM comision_ventas c

-- utilizando join comision_ventas y boleta

JOIN boleta b ON (b.nro_boleta = c.nro_boleta)

WHERE b.id_vendedor = p_idvendedor

AND TO_CHAR(fecha_boleta,'MM/YYYY') = p_fecha;

IF v_total_com IS NULL THEN

RETURN 0;

ELSE

RETURN v_total_com;

END IF;

END fn_comision_mensual; -- cerrar la funcion que estamos trabajando dentro del pkg

END pkg_comision_vendedor;-- cerrar el pkg siempre con el nombre que ustedes le asignaron

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

triggers

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

create or replace

TRIGGER trg_actualiza_stock

AFTER INSERT OR UPDATE OR DELETE ON detalle_boleta

FOR EACH ROW

WHEN (NEW.cantidad <> OLD.cantidad OR OLD.cantidad IS NULL OR NEW.cantidad IS NULL)

BEGIN

IF inserting THEN

UPDATE stock

SET stock_actual = stock_actual - :new.cantidad

WHERE cod_producto = :NEW.cod_producto;

ELSE

IF updating THEN

UPDATE stock

SET stock_actual = (stock_actual + :OLD.cantidad) - :new.cantidad

WHERE cod_producto = :NEW.cod_producto;

ELSE

UPDATE stock

SET stock_actual = stock_actual + :OLD.cantidad

WHERE cod_producto = :OLD.cod_producto;

END IF;

END IF;

DBMS_OUTPUT.PUT_LINE('ME EJECUTE');

END;

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

...

Descargar como (para miembros actualizados) txt (2 Kb) pdf (52 Kb) docx (10 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com