Esempi sulle store procedure
This commit is contained in:
30
procedure/PROCEDURA_1.sql
Normal file
30
procedure/PROCEDURA_1.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
--Creazione Procedura PremioBollini
|
||||
CREATE OR REPLACE PROCEDURE Sp_GenPremioBollini(Anno_I IN NUMBER, Mese_I IN NUMBER)
|
||||
AS
|
||||
--Creazione del cursore
|
||||
CURSOR C_BestCli(V_MeseRif NUMBER, V_AnnoRif NUMBER)
|
||||
IS
|
||||
SELECT DISTINCT CODFID
|
||||
FROM SCONTRINI
|
||||
WHERE CODFID <> '-1'
|
||||
AND EXTRACT(YEAR FROM DATA) = V_AnnoRif
|
||||
AND EXTRACT(MONTH FROM DATA) = V_MeseRif
|
||||
GROUP BY CODFID
|
||||
HAVING SUM(TOTALE) >= 500;
|
||||
|
||||
BEGIN
|
||||
|
||||
FOR R_BestCli IN C_BestCli(Mese_I,Anno_I)
|
||||
LOOP
|
||||
UPDATE CARDS_TEMP
|
||||
SET BOLLINI = BOLLINI + 500
|
||||
WHERE CODFIDELITY = R_BestCli.CODFID;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('Aggiunti 500 Punti alla Fidelity: ' || R_BestCli.CODFID || '.');
|
||||
|
||||
END LOOP;
|
||||
|
||||
commit;
|
||||
|
||||
END;
|
||||
|
||||
23
procedure/PROCEDURA_2.sql
Normal file
23
procedure/PROCEDURA_2.sql
Normal file
@@ -0,0 +1,23 @@
|
||||
-- Procedure SelArticolo V.1
|
||||
|
||||
CREATE OR REPLACE PROCEDURE Sp_SelArticolo
|
||||
(
|
||||
I_CodArt IN VARCHAR2,
|
||||
O_DesArt OUT VARCHAR2,
|
||||
O_Prezzo OUT VARCHAR2
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
SELECT A.CODART ||' '|| A.DESCRIZIONE AS Articolo, BB.PREZZO
|
||||
INTO O_DesArt, O_Prezzo
|
||||
FROM ARTICOLI A LEFT JOIN
|
||||
(SELECT CODART, PREZZO FROM DETTLISTINI WHERE IDLIST = 1) BB
|
||||
ON A.CODART = BB.CODART
|
||||
WHERE A.CODART = I_CodArt;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Errore nella ricerca del codice: ' || I_CodArt);
|
||||
|
||||
END Sp_SelArticolo;
|
||||
30
procedure/PROCEDURA_3.sql
Normal file
30
procedure/PROCEDURA_3.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
--Creazione Procedura PremioBollini
|
||||
CREATE OR REPLACE PROCEDURE Sp_GenPremioBollini
|
||||
AS
|
||||
--Creazione del cursore
|
||||
CURSOR C_BestCli(V_MeseRif NUMBER, V_AnnoRif NUMBER)
|
||||
IS
|
||||
SELECT DISTINCT CODFID
|
||||
FROM SCONTRINI
|
||||
WHERE CODFID <> '-1'
|
||||
AND EXTRACT(YEAR FROM DATA) = V_AnnoRif
|
||||
AND EXTRACT(MONTH FROM DATA) = V_MeseRif
|
||||
GROUP BY CODFID
|
||||
HAVING SUM(TOTALE) >= 500;
|
||||
|
||||
BEGIN
|
||||
|
||||
FOR R_BestCli IN C_BestCli(7,2017)
|
||||
LOOP
|
||||
UPDATE CARDS_TEMP
|
||||
SET BOLLINI = BOLLINI + 500
|
||||
WHERE CODFIDELITY = R_BestCli.CODFID;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('Aggiunti 500 Punti alla Fidelity: ' || R_BestCli.CODFID || '.');
|
||||
|
||||
END LOOP;
|
||||
|
||||
commit;
|
||||
|
||||
END;
|
||||
|
||||
18
procedure/PROCEDURA_4.sql
Normal file
18
procedure/PROCEDURA_4.sql
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
CREATE OR REPLACE PROCEDURE Sp_SelCliente(CODFID_I IN CLIENTI.CODFIDELITY%TYPE,
|
||||
RECORDSET_P OUT SYS_REFCURSOR)
|
||||
IS
|
||||
BEGIN
|
||||
|
||||
OPEN RECORDSET_P FOR
|
||||
SELECT
|
||||
A.CODFIDELITY,
|
||||
A.NOME,
|
||||
A.COGNOME,
|
||||
A.COMUNE,
|
||||
A.PROV,
|
||||
A.STATO
|
||||
FROM CLIENTI A
|
||||
WHERE A.CODFIDELITY = CODFID_I;
|
||||
|
||||
END Sp_SelCliente;
|
||||
51
procedure/PROCEDURA_5.sql
Normal file
51
procedure/PROCEDURA_5.sql
Normal file
@@ -0,0 +1,51 @@
|
||||
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 <20> stato trovato alcun cliente con i criteri ricercati');
|
||||
END Sp_GenCoupon;
|
||||
Reference in New Issue
Block a user