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