Esempi sulle collezioni e i record

This commit is contained in:
Fabio Scotto di Santolo
2019-09-25 21:13:58 +02:00
parent 330aa77609
commit 585372ff49
7 changed files with 405 additions and 0 deletions

19
record/RECORD_1.sql Normal file
View 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
View 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
View 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
View 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;