Files
corso-plsql/cursori/CURSORI_6.sql
Fabio Scotto di Santolo 330aa77609 Esempi sui cursori
2019-09-13 20:02:16 +02:00

61 lines
1.2 KiB
SQL

--Esempio Cursori Annidati
DECLARE
V_NUMSPESE NUMBER := &NUMSPESE;
--Primo Cursore: I migliori n clienti
CURSOR C_BESTCLI(P_NUMSPESE IN NUMBER)
IS
SELECT
AA.*
FROM
(
SELECT
CODFID,
SUM(TOTALE) AS TOTVEND
FROM
SCONTRINI
WHERE
CODFID <> '-1'
GROUP BY
CODFID
ORDER BY
SUM(TOTALE) DESC
)
AA
WHERE
ROWNUM <= P_NUMSPESE;
--Secondo Cursore: I dati di ciascun cliente
CURSOR C_DATICLI(P_CODFID IN CLIENTI.CODFIDELITY%TYPE)
IS
SELECT
A.CODFIDELITY,
A.NOME
|| ' '
|| A.COGNOME AS NOMINATIVO,
B.BOLLINI,
B.ULTIMASPESA
FROM
CLIENTI A
JOIN CARDS B
ON
A.CODFIDELITY = B.CODFIDELITY
WHERE
A.CODFIDELITY = P_CODFID FOR UPDATE;
BEGIN
FOR R_BESTCLI IN C_BESTCLI(V_NUMSPESE)
LOOP
DBMS_OUTPUT.PUT_LINE(R_BESTCLI.CODFID || ' ' || R_BESTCLI.TOTVEND);
FOR R_DATICLI IN C_DATICLI(R_BESTCLI.CODFID)
LOOP
DBMS_OUTPUT.PUT_LINE(R_DATICLI.CODFIDELITY || '|' || R_DATICLI.NOMINATIVO || ' | ' || R_DATICLI.BOLLINI || ' | '
|| R_DATICLI.ULTIMASPESA);
END LOOP;
END LOOP;
COMMIT;
END;