63 lines
1.4 KiB
SQL
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; |