Files
corso-plsql/procedure/PROCEDURA_5.sql
Fabio Scotto di Santolo 802f67fb39 Esempi sulle store procedure
2019-09-25 22:48:03 +02:00

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;