Esempi sulle collezioni e i record
This commit is contained in:
59
collezioni/COLLEZIONI_1.sql
Normal file
59
collezioni/COLLEZIONI_1.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
--Esempio di Index-by 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 INDEX-BY TABLE
|
||||
TYPE NOMINATIVO_TYPE
|
||||
IS
|
||||
TABLE OF VARCHAR2(100) INDEX BY PLS_INTEGER;
|
||||
|
||||
NOMINATIVO_TAB NOMINATIVO_TYPE;
|
||||
V_INDEX PLS_INTEGER := 0;
|
||||
|
||||
BEGIN
|
||||
|
||||
FOR R_CLIENTI IN C_CLIENTI
|
||||
LOOP
|
||||
V_INDEX := V_INDEX + 1;
|
||||
|
||||
NOMINATIVO_TAB(V_INDEX) := R_CLIENTI.NOMINATIVO;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('RECORD(' || V_INDEX || '): ' || ' ' || NOMINATIVO_TAB(V_INDEX));
|
||||
END LOOP;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('record(' || 11 || '):' || NOMINATIVO_TAB(11));
|
||||
END;
|
||||
89
collezioni/COLLEZIONI_2.sql
Normal file
89
collezioni/COLLEZIONI_2.sql
Normal file
@@ -0,0 +1,89 @@
|
||||
--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;
|
||||
83
collezioni/COLLEZIONI_3.sql
Normal file
83
collezioni/COLLEZIONI_3.sql
Normal file
@@ -0,0 +1,83 @@
|
||||
--Esempio di varray
|
||||
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 VARRAY
|
||||
TYPE nominativo_type IS VARRAY(11) 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;
|
||||
Reference in New Issue
Block a user