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;
|
||||
19
record/RECORD_1.sql
Normal file
19
record/RECORD_1.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- Esempio di Table Based Record
|
||||
|
||||
DECLARE
|
||||
ARTICOLO_REC ARTICOLI%ROWTYPE;
|
||||
BEGIN
|
||||
SELECT
|
||||
*
|
||||
INTO
|
||||
ARTICOLO_REC
|
||||
FROM
|
||||
ARTICOLI
|
||||
WHERE
|
||||
CODART = '001122501';
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('Codice: '||ARTICOLO_REC.CODART);
|
||||
DBMS_OUTPUT.PUT_LINE ('Descrizione: '||ARTICOLO_REC.DESCRIZIONE);
|
||||
DBMS_OUTPUT.PUT_LINE ('Pezzi x Cartone: '||ARTICOLO_REC.PZCART);
|
||||
|
||||
END;
|
||||
42
record/RECORD_2.sql
Normal file
42
record/RECORD_2.sql
Normal file
@@ -0,0 +1,42 @@
|
||||
-- Esempio di Cursor Based Record
|
||||
DECLARE
|
||||
CURSOR ARTICOLI_CUR
|
||||
IS
|
||||
SELECT
|
||||
AA.*
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
CODART,
|
||||
DESCRIZIONE,
|
||||
PZCART,
|
||||
DATACREAZIONE
|
||||
FROM
|
||||
ARTICOLI
|
||||
WHERE
|
||||
IDFAMASS = '10'
|
||||
)
|
||||
AA
|
||||
WHERE
|
||||
ROWNUM <= 30;
|
||||
|
||||
ARTICOLI_REC ARTICOLI_CUR%ROWTYPE;
|
||||
BEGIN
|
||||
--Apertura Cursore
|
||||
OPEN ARTICOLI_CUR;
|
||||
|
||||
LOOP
|
||||
FETCH
|
||||
ARTICOLI_CUR
|
||||
INTO
|
||||
ARTICOLI_REC;
|
||||
EXIT
|
||||
WHEN ARTICOLI_CUR%NOTFOUND;
|
||||
DBMS_OUTPUT.PUT_LINE ('Articolo: '||ARTICOLI_REC.CODART||'-'||ARTICOLI_REC.DESCRIZIONE);
|
||||
DBMS_OUTPUT.PUT_LINE ('Pezzi x Cartone: '||ARTICOLI_REC.PZCART);
|
||||
DBMS_OUTPUT.PUT_LINE ('Data Creazione: '||TO_CHAR(ARTICOLI_REC.DATACREAZIONE,'DD/MM/YYYY'));
|
||||
END LOOP;
|
||||
|
||||
CLOSE ARTICOLI_CUR;
|
||||
|
||||
END;
|
||||
50
record/RECORD_3.sql
Normal file
50
record/RECORD_3.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
-- Esempio di Record creati dall'utente
|
||||
DECLARE
|
||||
-- 1°Record definito dall'utente
|
||||
TYPE CARD_TYPE
|
||||
IS
|
||||
RECORD
|
||||
(
|
||||
CODFIDELITY VARCHAR2(20),
|
||||
BOLLINI NUMBER,
|
||||
ULTIMASPESA DATE );
|
||||
|
||||
-- 2°Record definito dall'utente
|
||||
TYPE CLIENTI_TYPE
|
||||
IS
|
||||
RECORD
|
||||
(
|
||||
CARD CARD_TYPE,
|
||||
NOMINATIVO VARCHAR2(100),
|
||||
PROVINCIA VARCHAR2(3) );
|
||||
|
||||
CLIENTI_REC CLIENTI_TYPE;
|
||||
|
||||
BEGIN
|
||||
|
||||
SELECT
|
||||
A.CODFIDELITY,
|
||||
A.NOME
|
||||
|| ' '
|
||||
|| A.COGNOME,
|
||||
A.PROV,
|
||||
A.BOLLINI,
|
||||
A.ULTIMASPESA
|
||||
INTO
|
||||
CLIENTI_REC.CARD.CODFIDELITY,
|
||||
CLIENTI_REC.NOMINATIVO,
|
||||
CLIENTI_REC.PROVINCIA,
|
||||
CLIENTI_REC.CARD.BOLLINI,
|
||||
CLIENTI_REC.CARD.ULTIMASPESA
|
||||
FROM
|
||||
VW_CLIENTI A
|
||||
WHERE
|
||||
a.CODFIDELITY = '67100724';
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('NOMINATIVO: '||CLIENTI_REC.NOMINATIVO);
|
||||
DBMS_OUTPUT.PUT_LINE ('CodFid: '||CLIENTI_REC.CARD.CODFIDELITY);
|
||||
DBMS_OUTPUT.PUT_LINE ('BOLLINI: '||CLIENTI_REC.CARD.BOLLINI);
|
||||
DBMS_OUTPUT.PUT_LINE ('Ultima Spesa: '||CLIENTI_REC.CARD.ULTIMASPESA);
|
||||
DBMS_OUTPUT.PUT_LINE ('Prov: '||CLIENTI_REC.PROVINCIA);
|
||||
|
||||
END;
|
||||
63
record/RECORD_4.sql
Normal file
63
record/RECORD_4.sql
Normal file
@@ -0,0 +1,63 @@
|
||||
--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;
|
||||
Reference in New Issue
Block a user