Esempi sulla OOP in PL/SQL
This commit is contained in:
7
oop/OOP_1.sql
Normal file
7
oop/OOP_1.sql
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
--Esempio di tipo Oggetto di base
|
||||||
|
CREATE OR REPLACE TYPE cliente_obj_type AS OBJECT
|
||||||
|
(Codice VARCHAR2(20),
|
||||||
|
Nominativo VARCHAR2(100),
|
||||||
|
Residenza VARCHAR(20),
|
||||||
|
Bollini int,
|
||||||
|
UltimaSpesa Date)
|
||||||
53
oop/OOP_2.sql
Normal file
53
oop/OOP_2.sql
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
--Esempio di tipo Oggetto con costruttore e metodo
|
||||||
|
CREATE OR REPLACE TYPE cliente_obj_type_V2 AS OBJECT
|
||||||
|
(
|
||||||
|
Codice VARCHAR2(20),
|
||||||
|
Nominativo VARCHAR2(100),
|
||||||
|
Residenza VARCHAR(20),
|
||||||
|
Bollini int,
|
||||||
|
UltimaSpesa Date,
|
||||||
|
|
||||||
|
CONSTRUCTOR FUNCTION cliente_obj_type_V2(CodFid VARCHAR2)
|
||||||
|
RETURN SELF AS RESULT,
|
||||||
|
|
||||||
|
MEMBER PROCEDURE getInfo(SELF IN OUT NOCOPY cliente_obj_type_V2)
|
||||||
|
|
||||||
|
)
|
||||||
|
INSTANTIABLE NOT FINAL;
|
||||||
|
|
||||||
|
--Corpo del tipo oggetto
|
||||||
|
CREATE OR REPLACE TYPE BODY cliente_obj_type_V2 IS
|
||||||
|
|
||||||
|
-- costruttore
|
||||||
|
CONSTRUCTOR FUNCTION cliente_obj_type_V2 (CodFid VARCHAR2)
|
||||||
|
RETURN SELF AS RESULT IS
|
||||||
|
BEGIN
|
||||||
|
self.Codice := CodFid;
|
||||||
|
RETURN;
|
||||||
|
END cliente_obj_type_V2;
|
||||||
|
|
||||||
|
-- primo metodo
|
||||||
|
MEMBER PROCEDURE getInfo(SELF IN OUT NOCOPY cliente_obj_type_V2) IS
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
SELECT A.NOME || ' ' || A.COGNOME, A.COMUNE, B.Bollini, B.UltimaSpesa
|
||||||
|
INTO SELF.Nominativo, SELF.Residenza, SELF.Bollini, SELF.UltimaSpesa
|
||||||
|
FROM CLIENTI A
|
||||||
|
JOIN CARDS B
|
||||||
|
ON A.CODFIDELITY = b.codfidelity
|
||||||
|
WHERE A.CODFIDELITY = SELF.Codice;
|
||||||
|
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('Codice:' || SELF.Codice);
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('Nominativo:' || SELF.Nominativo);
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('Bollini:'|| SELF.Bollini);
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('Ultima Spesa:'|| SELF.UltimaSpesa);
|
||||||
|
|
||||||
|
RETURN;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
RETURN;
|
||||||
|
END getInfo;
|
||||||
|
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
69
oop/OOP_3.sql
Normal file
69
oop/OOP_3.sql
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
--Esempio di tipo Oggetto con accessori e mutatori (getter e setter)
|
||||||
|
CREATE OR REPLACE TYPE cliente_obj_type_V3 AS OBJECT
|
||||||
|
(
|
||||||
|
Codice VARCHAR2(20),
|
||||||
|
Nominativo VARCHAR2(100),
|
||||||
|
Residenza VARCHAR(20),
|
||||||
|
Bollini int,
|
||||||
|
UltimaSpesa Date,
|
||||||
|
|
||||||
|
CONSTRUCTOR FUNCTION cliente_obj_type_V3(CodFid VARCHAR2)
|
||||||
|
RETURN SELF AS RESULT,
|
||||||
|
|
||||||
|
--CREAZIONE GETTER E SETTER
|
||||||
|
MEMBER FUNCTION getCodice RETURN VARCHAR2,
|
||||||
|
MEMBER PROCEDURE setCodice(CodFid VARCHAR2),
|
||||||
|
--Creazione Metodo
|
||||||
|
MEMBER PROCEDURE getInfo(SELF IN OUT NOCOPY cliente_obj_type_V3)
|
||||||
|
|
||||||
|
)
|
||||||
|
INSTANTIABLE NOT FINAL;
|
||||||
|
|
||||||
|
--Corpo del tipo oggetto
|
||||||
|
CREATE OR REPLACE TYPE BODY cliente_obj_type_V3 IS
|
||||||
|
|
||||||
|
-- costruttore
|
||||||
|
CONSTRUCTOR FUNCTION cliente_obj_type_V3 (CodFid VARCHAR2)
|
||||||
|
RETURN SELF AS RESULT IS
|
||||||
|
BEGIN
|
||||||
|
self.Codice := CodFid;
|
||||||
|
RETURN;
|
||||||
|
END cliente_obj_type_V3;
|
||||||
|
|
||||||
|
--Implementazione Getter
|
||||||
|
MEMBER FUNCTION getCodice RETURN VARCHAR2 IS
|
||||||
|
BEGIN
|
||||||
|
RETURN SELF.Codice;
|
||||||
|
END getCodice;
|
||||||
|
|
||||||
|
--Implementazione Setter
|
||||||
|
MEMBER PROCEDURE setCodice (CodFid VARCHAR2) IS
|
||||||
|
BEGIN
|
||||||
|
SELF.CODICE := CodFid;
|
||||||
|
END setCodice;
|
||||||
|
|
||||||
|
-- primo metodo
|
||||||
|
MEMBER PROCEDURE getInfo(SELF IN OUT NOCOPY cliente_obj_type_V3) IS
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
SELECT A.NOME || ' ' || A.COGNOME, A.COMUNE, B.Bollini, B.UltimaSpesa
|
||||||
|
INTO SELF.Nominativo, SELF.Residenza, SELF.Bollini, SELF.UltimaSpesa
|
||||||
|
FROM CLIENTI A
|
||||||
|
JOIN CARDS B
|
||||||
|
ON A.CODFIDELITY = b.codfidelity
|
||||||
|
WHERE A.CODFIDELITY = SELF.Codice;
|
||||||
|
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('Codice:' || SELF.Codice);
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('Nominativo:' || SELF.Nominativo);
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('Bollini:'|| SELF.Bollini);
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('Ultima Spesa:'|| SELF.UltimaSpesa);
|
||||||
|
|
||||||
|
RETURN;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
RETURN;
|
||||||
|
END getInfo;
|
||||||
|
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user