Files
corso-plsql/record/RECORD_4.sql
2019-09-25 21:13:58 +02:00

63 lines
1.4 KiB
SQL

--Esempio di collezione di record definiti dall'utente
DECLARE
CURSOR CLIENTI_CUR
IS
SELECT
CODFIDELITY,
NOME
|| ' '
|| COGNOME AS NOMINATIVO,
BOLLINI,
PROV
FROM
VW_CLIENTI
WHERE
CODFIDELITY IN
(
SELECT DISTINCT
CODFID
FROM
SCONTRINI
GROUP BY
CODFID
HAVING
SUM(BOLLINI) > 500
)
ORDER BY
BOLLINI DESC;
TYPE BEST_CLIFID_RECORD
IS
RECORD
(
CODFID VARCHAR(20),
NOMINATIVO VARCHAR2(100),
BOLLINI NUMBER,
PROVINCIA VARCHAR2(3) );
TYPE CLIFID_ARRAY_TYPE
IS
TABLE OF BEST_CLIFID_RECORD INDEX BY PLS_INTEGER;
CLIFID_TAB CLIFID_ARRAY_TYPE;
V_INDEX INTEGER := 0;
BEGIN
FOR CLIENTI_REC IN CLIENTI_CUR
LOOP
V_INDEX := V_INDEX + 1;
CLIFID_TAB(V_INDEX).CODFID := CLIENTI_REC.CODFIDELITY;
CLIFID_TAB(V_INDEX).NOMINATIVO := CLIENTI_REC.NOMINATIVO;
CLIFID_TAB(V_INDEX).BOLLINI := CLIENTI_REC.BOLLINI;
CLIFID_TAB(V_INDEX).PROVINCIA := CLIENTI_REC.PROV;
DBMS_OUTPUT.PUT_LINE ('Posizione: '|| V_INDEX);
DBMS_OUTPUT.PUT_LINE ('NOMINATIVO: '||CLIFID_TAB(V_INDEX).NOMINATIVO);
DBMS_OUTPUT.PUT_LINE ('CODFID: '||CLIFID_TAB(V_INDEX).CODFID);
DBMS_OUTPUT.PUT_LINE ('BOLLINI: '||CLIFID_TAB(V_INDEX).BOLLINI);
DBMS_OUTPUT.PUT_LINE ('Prov: '||CLIFID_TAB(V_INDEX).PROVINCIA);
END LOOP;
END;