Esempi sulle funzioni

This commit is contained in:
Fabio Scotto di Santolo
2019-09-25 22:48:36 +02:00
parent 802f67fb39
commit a4fbba3f17
2 changed files with 74 additions and 0 deletions

36
funzioni/FUNZIONE_1.sql Normal file
View File

@@ -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;

38
funzioni/FUNZIONE_2.sql Normal file
View File

@@ -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;