diff --git a/funzioni/FUNZIONE_1.sql b/funzioni/FUNZIONE_1.sql new file mode 100644 index 0000000..0a3754f --- /dev/null +++ b/funzioni/FUNZIONE_1.sql @@ -0,0 +1,36 @@ +-- Funzione GetPrzArt V.1 +CREATE OR REPLACE FUNCTION Uf_GetPrzArt +(V_CodArt DETTLISTINI.CODART%TYPE, +V_IdList DETTLISTINI.IDLIST%TYPE) +RETURN NUMBER +AS + CURSOR C_PrzList(I_IdList IN DETTLISTINI.IDLIST%TYPE, I_CodArt IN DETTLISTINI.CODART%TYPE) IS + SELECT PREZZO + FROM DETTLISTINI + WHERE CODART = I_CodArt AND + IDLIST = I_IdList; + + V_RetVal NUMBER; + +BEGIN + + OPEN C_PrzList(V_IdList,V_CodArt); + + FETCH C_PrzList INTO V_RetVal; + + IF C_PrzList%NOTFOUND THEN + CLOSE C_PrzList; + RETURN NULL; + ELSE + CLOSE C_PrzList; + RETURN v_RetVal; + END IF; + + EXCEPTION + WHEN OTHERS + THEN + IF C_PrzList%ISOPEN THEN + CLOSE C_PrzList; + END IF; + +END Uf_GetPrzArt; \ No newline at end of file diff --git a/funzioni/FUNZIONE_2.sql b/funzioni/FUNZIONE_2.sql new file mode 100644 index 0000000..474ee6c --- /dev/null +++ b/funzioni/FUNZIONE_2.sql @@ -0,0 +1,38 @@ +-- Funzione Uf_GetFattArt V.1 +CREATE OR REPLACE FUNCTION Uf_GetFattArt +(CodArt_I ARTICOLI.CODART%TYPE, +Tipo_Vend NUMBER) -- 1 = Totale; 2 = Normale; 3 = Promo +RETURN NUMBER +AS + v_RetVal NUMBER; +BEGIN + + IF Tipo_Vend = 3 THEN + SELECT NVL(SUM(QTA * Prezzo),0) INTO v_RetVal + FROM DETTSCONTRINI + WHERE CODART = CodArt_I + AND INPROMO = 'Si'; + ELSIF Tipo_Vend = 2 THEN + SELECT NVL(SUM(QTA * Prezzo),0) INTO v_RetVal + FROM DETTSCONTRINI + WHERE CODART = CodArt_I + AND INPROMO = 'No'; + ELSE + SELECT NVL(SUM(QTA * Prezzo),0) INTO v_RetVal + FROM DETTSCONTRINI + WHERE CODART = CodArt_I; + END IF; + + RETURN v_RetVal; + + EXCEPTION + WHEN NO_DATA_FOUND + THEN + RETURN(0); + DBMS_OUTPUT.PUT_LINE ('Articolo non trovato o non venduto'); + WHEN OTHERS + THEN + RETURN(-1); + DBMS_OUTPUT.PUT_LINE ('Errore Esecuzione Uf_GetPrzArt'); + +END Uf_GetFattArt; \ No newline at end of file