51 lines
1.6 KiB
SQL
51 lines
1.6 KiB
SQL
CREATE OR REPLACE PROCEDURE Sp_GenCoupon
|
|
(NumSpese_I IN NUMBER, Mese_I IN NUMBER)
|
|
AS
|
|
ValSpesa_FascA CONSTANT NUMBER := 800;
|
|
QtaCoup_FascA CONSTANT NUMBER := 5;
|
|
ValSpesa_FascB CONSTANT NUMBER := 500;
|
|
QtaCoup_FascB CONSTANT NUMBER := 3;
|
|
ValSpesa_FascC CONSTANT NUMBER := 200;
|
|
QtaCoup_FascC CONSTANT NUMBER := 1;
|
|
|
|
--Creazione Cursore: I migliori n clienti
|
|
CURSOR C_BestCli IS
|
|
SELECT AA.* FROM
|
|
(
|
|
SELECT
|
|
CODFID,
|
|
TOTVEND,
|
|
QTASPESE,
|
|
MESE
|
|
FROM VW_SpeseCliFid
|
|
WHERE CODFID <> '-1' AND
|
|
MESE = Mese_I
|
|
) AA
|
|
WHERE rownum <= NumSpese_I;
|
|
|
|
BEGIN
|
|
DELETE FROM COUPONS WHERE MESE = Mese_I + 1;
|
|
|
|
FOR R_BestCli IN C_BestCli
|
|
LOOP
|
|
IF R_BestCli.TOTVEND >= ValSpesa_FascA THEN
|
|
INSERT INTO COUPONS
|
|
VALUES(to_char(sysdate, 'YYYY'), R_BestCli.MESE + 1, R_BestCli.CODFID, QtaCoup_FascA);
|
|
ELSIF R_BestCli.TOTVEND >= ValSpesa_FascB AND R_BestCli.TOTVEND < ValSpesa_FascA THEN
|
|
INSERT INTO COUPONS
|
|
VALUES(to_char(sysdate, 'YYYY'), R_BestCli.MESE + 1, R_BestCli.CODFID, QtaCoup_FascB);
|
|
ELSIF R_BestCli.TOTVEND >= ValSpesa_FascC AND R_BestCli.TOTVEND < ValSpesa_FascB THEN
|
|
INSERT INTO COUPONS
|
|
VALUES(to_char(sysdate, 'YYYY'), R_BestCli.MESE + 1, R_BestCli.CODFID, QtaCoup_FascC);
|
|
END IF;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
DBMS_OUTPUT.PUT_LINE('Creazione Coupon Eseguita con Successo');
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
DBMS_OUTPUT.PUT_LINE('Non è stato trovato alcun cliente con i criteri ricercati');
|
|
END Sp_GenCoupon; |