89 lines
1.9 KiB
SQL
89 lines
1.9 KiB
SQL
--Esempio di NESTED TABLE
|
|
DECLARE
|
|
CURSOR C_CLIENTI
|
|
IS
|
|
SELECT
|
|
AA.*
|
|
FROM
|
|
(
|
|
SELECT
|
|
A.NOME
|
|
|| ' '
|
|
|| A.COGNOME AS NOMINATIVO
|
|
FROM
|
|
CLIENTI A
|
|
JOIN
|
|
(
|
|
SELECT
|
|
CODFID,
|
|
COUNT( * ) AS NUMSPESE,
|
|
SUM(TOTALE) AS VALTOT
|
|
FROM
|
|
SCONTRINI
|
|
GROUP BY
|
|
CODFID
|
|
)
|
|
B
|
|
ON
|
|
A.CODFIDELITY = B.CODFID
|
|
WHERE
|
|
B.NUMSPESE > 0
|
|
AND B.CODFID <> - 1
|
|
ORDER BY
|
|
B.VALTOT DESC
|
|
)
|
|
AA
|
|
WHERE
|
|
ROWNUM <= 10;
|
|
|
|
--CREAZIONE NUOVA NESTED TABLE
|
|
TYPE NOMINATIVO_TYPE
|
|
IS
|
|
TABLE OF VARCHAR2(100);
|
|
NOMINATIVO_TAB NOMINATIVO_TYPE := NOMINATIVO_TYPE();
|
|
|
|
V_INDEX PLS_INTEGER := 0;
|
|
|
|
BEGIN
|
|
FOR R_CLIENTI IN C_CLIENTI
|
|
LOOP
|
|
V_INDEX := V_INDEX + 1;
|
|
|
|
NOMINATIVO_TAB.EXTEND;
|
|
NOMINATIVO_TAB(V_INDEX) := R_CLIENTI.NOMINATIVO;
|
|
|
|
DBMS_OUTPUT.PUT_LINE ('RECORD(' || V_INDEX || '): ' || ' ' || NOMINATIVO_TAB(V_INDEX));
|
|
|
|
END LOOP;
|
|
|
|
NOMINATIVO_TAB.EXTEND;
|
|
NOMINATIVO_TAB(11) := 'NICOLA LA ROCCA';
|
|
|
|
IF NOMINATIVO_TAB.EXISTS(11) THEN
|
|
DBMS_OUTPUT.PUT_LINE ('RECORD(' || 11 || '): ' || NOMINATIVO_TAB(11));
|
|
END IF;
|
|
|
|
|
|
NOMINATIVO_TAB.EXTEND;
|
|
IF NOMINATIVO_TAB.EXISTS(12) THEN
|
|
DBMS_OUTPUT.PUT_LINE ('RECORD(' || 12 || '):' || NOMINATIVO_TAB(12));
|
|
END IF;
|
|
|
|
DBMS_OUTPUT.PUT_LINE ('Numero Totale Record: ' || NOMINATIVO_TAB.COUNT);
|
|
|
|
NOMINATIVO_TAB.DELETE(12);
|
|
|
|
DBMS_OUTPUT.PUT_LINE ('Numero Totale Record: ' || NOMINATIVO_TAB.COUNT);
|
|
|
|
DBMS_OUTPUT.PUT_LINE ('Primo Record: ' || NOMINATIVO_TAB.FIRST);
|
|
DBMS_OUTPUT.PUT_LINE ('Ultimo Record: ' || NOMINATIVO_TAB.LAST);
|
|
|
|
NOMINATIVO_TAB.TRIM(3);
|
|
|
|
FOR i IN 1..NOMINATIVO_TAB.LAST
|
|
LOOP
|
|
DBMS_OUTPUT.PUT_LINE ('RECORD(' || i || '): ' || ' ' || NOMINATIVO_TAB(i));
|
|
END LOOP;
|
|
|
|
|
|
END; |