Statement di controllo e di iterazione
This commit is contained in:
28
CASE-WHEN.sql
Normal file
28
CASE-WHEN.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
DECLARE
|
||||
V_CODFIDELITY VARCHAR2(20) := :CODFID;
|
||||
V_RESIDENZA VARCHAR2(30);
|
||||
BEGIN
|
||||
|
||||
SELECT
|
||||
TRIM(PROV)
|
||||
INTO
|
||||
V_RESIDENZA
|
||||
FROM
|
||||
CORSOPLSQL.CLIENTI
|
||||
WHERE
|
||||
CODFIDELITY = V_CODFIDELITY;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Provincia: ' || V_RESIDENZA);
|
||||
|
||||
-- Espressioni case
|
||||
CASE V_RESIDENZA
|
||||
WHEN 'OR' THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Centro Sardegna');
|
||||
WHEN 'SS' THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Nord Sardegna');
|
||||
WHEN 'CA' THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Sud Sardegna');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('Non in Sardegna');
|
||||
END CASE;
|
||||
END;
|
||||
36
CICLI-ANNIDATI.sql
Normal file
36
CICLI-ANNIDATI.sql
Normal file
@@ -0,0 +1,36 @@
|
||||
DECLARE
|
||||
V_CODFID VARCHAR2(20) := :CODFID;
|
||||
V_NUMSPESE BINARY_INTEGER := 0;
|
||||
V_CONTATORE1 BINARY_INTEGER := 0;
|
||||
V_CONTATORE2 BINARY_INTEGER := 0;
|
||||
V_BONUS NUMBER := 0;
|
||||
V_MAXCICLE2 NUMBER;
|
||||
BEGIN
|
||||
|
||||
SELECT
|
||||
COUNT(*)
|
||||
INTO
|
||||
V_NUMSPESE
|
||||
FROM
|
||||
CORSOPLSQL.SCONTRINI
|
||||
WHERE
|
||||
CODFID = V_CODFID;
|
||||
|
||||
<<SPESE>>
|
||||
FOR V_CONTATORE1 IN 1..V_NUMSPESE - 15 LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Spesa ' || V_CONTATORE1);
|
||||
|
||||
V_MAXCICLE2 := V_NUMSPESE - 15;
|
||||
V_BONUS := 0;
|
||||
|
||||
<<BONUS>>
|
||||
FOR V_CONTATORE2 IN 1..V_MAXCICLE2 LOOP
|
||||
V_BONUS := V_BONUS + 100;
|
||||
DBMS_OUTPUT.PUT_LINE('Creato Bonus extra (+100) ' || V_CONTATORE2 || ' della Spesa ' || V_CONTATORE1);
|
||||
END LOOP;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Bonus Totale Spesa ' || V_CONTATORE1 || ': ' || V_BONUS);
|
||||
END LOOP;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Fatto!');
|
||||
END;
|
||||
37
FOR.sql
Normal file
37
FOR.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
DECLARE
|
||||
V_CODFID VARCHAR2(20) := :CODFID;
|
||||
V_NUMSPESE BINARY_INTEGER := 0;
|
||||
V_CONTATORE BINARY_INTEGER := 0;
|
||||
V_MINVALUE NUMBER := 0;
|
||||
V_BONUS NUMBER := 0;
|
||||
BEGIN
|
||||
|
||||
SELECT
|
||||
COUNT(*)
|
||||
INTO
|
||||
V_NUMSPESE
|
||||
FROM
|
||||
CORSOPLSQL.SCONTRINI
|
||||
WHERE
|
||||
CODFID = V_CODFID;
|
||||
|
||||
V_NUMSPESE := V_NUMSPESE - 15;
|
||||
|
||||
-- Espressione FOR
|
||||
IF (V_NUMSPESE > V_MINVALUE) THEN
|
||||
-- Ciclo inverso: FOR <CONTATORE> IN REVERSE <RANGE> LOOP
|
||||
FOR V_CONTATORE IN V_MINVALUE..V_NUMSPESE LOOP
|
||||
V_BONUS := V_BONUS + 100;
|
||||
DBMS_OUTPUT.PUT_LINE('Creato Bonus ' || V_CONTATORE);
|
||||
|
||||
-- In alternativa EXIT WHEN V_BONUS > 500;
|
||||
IF V_BONUS > 500 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Bonus Massimo Raggiunto!');
|
||||
EXIT;
|
||||
END IF;
|
||||
|
||||
END LOOP;
|
||||
END IF;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Fatto!');
|
||||
END;
|
||||
14
IF-ELSE.sql
Normal file
14
IF-ELSE.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
DECLARE
|
||||
VAL_SPESA NUMBER;
|
||||
BEGIN
|
||||
|
||||
VAL_SPESA := 400;
|
||||
IF VAL_SPESA > 500 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Complimenti sei un cliente GOLD con una spesa di: ' || VAL_SPESA);
|
||||
ELSIF (VAL_SPESA > 300 AND VAL_SPESA < 500) THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Complimenti se un cliente SILVER con una spesa di: ' || VAL_SPESA);
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('Spiacente NON hai raggiunto il valore di spesa minimo (500):' || VAL_SPESA);
|
||||
END IF;
|
||||
|
||||
END;
|
||||
28
LOOP.sql
Normal file
28
LOOP.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
DECLARE
|
||||
V_CODFID VARCHAR2(20) := :CODFID;
|
||||
V_NUMSPESE BINARY_INTEGER := 0;
|
||||
V_CONTATORE BINARY_INTEGER := 0;
|
||||
V_NUMMINSPESE NUMBER := 15;
|
||||
BEGIN
|
||||
|
||||
SELECT
|
||||
COUNT(*)
|
||||
INTO
|
||||
V_NUMSPESE
|
||||
FROM
|
||||
CORSOPLSQL.SCONTRINI
|
||||
WHERE
|
||||
CODFID = V_CODFID;
|
||||
|
||||
-- Espressione LOOP
|
||||
-- Si comporta simile all'istruzione do...while
|
||||
IF V_NUMSPESE > V_NUMMINSPESE THEN
|
||||
LOOP
|
||||
V_CONTATORE := V_CONTATORE + 1;
|
||||
DBMS_OUTPUT.PUT_LINE('Creato Bonus ' || V_CONTATORE);
|
||||
EXIT WHEN V_CONTATORE = V_NUMSPESE - V_NUMMINSPESE;
|
||||
END LOOP;
|
||||
END IF;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Fatto!');
|
||||
END;
|
||||
28
SEARCHED CASE.sql
Normal file
28
SEARCHED CASE.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
DECLARE
|
||||
V_CODFIDELITY VARCHAR2(20) := :CODFID;
|
||||
V_BOLLINI NUMBER := 0;
|
||||
BEGIN
|
||||
|
||||
SELECT
|
||||
NVL(SUM(a.BOLLINI), 0)
|
||||
INTO
|
||||
V_BOLLINI
|
||||
FROM
|
||||
CORSOPLSQL.SCONTRINI a
|
||||
WHERE
|
||||
a.CODFID = V_CODFIDELITY;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Bollini: ' || V_BOLLINI);
|
||||
|
||||
-- Espressioni Searched Case
|
||||
CASE
|
||||
WHEN V_BOLLINI > 500 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Hai diritto ad un coupon da Euro 10');
|
||||
WHEN (V_BOLLINI > 300 AND V_BOLLINI < 500) THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Hai diritto ad un coupon di Euro 5');
|
||||
WHEN (V_BOLLINI > 100 AND V_BOLLINI < 300) THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Coraggio, un altro pò ed otterrai un coupon');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('Purtroppo non hai diritto al coupon!!!');
|
||||
END CASE;
|
||||
END;
|
||||
32
WHILE.sql
Normal file
32
WHILE.sql
Normal file
@@ -0,0 +1,32 @@
|
||||
DECLARE
|
||||
V_CODFID VARCHAR2(20) := :CODFID;
|
||||
V_NUMSPESE BINARY_INTEGER := 0;
|
||||
V_CONTATORE BINARY_INTEGER := 0;
|
||||
V_BONUS NUMBER := 0;
|
||||
BEGIN
|
||||
|
||||
SELECT
|
||||
COUNT(*)
|
||||
INTO
|
||||
V_NUMSPESE
|
||||
FROM
|
||||
CORSOPLSQL.SCONTRINI
|
||||
WHERE
|
||||
CODFID = V_CODFID;
|
||||
|
||||
V_CONTATORE := V_NUMSPESE - 15;
|
||||
|
||||
-- Espressione WHILE
|
||||
WHILE V_CONTATORE > 0 LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Creato Bonus ' || V_CONTATORE);
|
||||
V_CONTATORE := V_CONTATORE - 1;
|
||||
|
||||
IF V_BONUS > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Bonus Massimo Raggiunto!');
|
||||
EXIT;
|
||||
END IF;
|
||||
|
||||
END LOOP;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Fatto!');
|
||||
END;
|
||||
Reference in New Issue
Block a user