Files
corso-plsql/oop/OOP_3.sql
Fabio Scotto di Santolo 9b53c59ed6 Esempi sulla OOP in PL/SQL
2019-09-27 20:09:54 +02:00

69 lines
1.9 KiB
MySQL

--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;