Skip to content

Instantly share code, notes, and snippets.

@raimonizard
Last active April 25, 2023 11:21
Show Gist options
  • Save raimonizard/505b53fc258be7ac954291d18b67de88 to your computer and use it in GitHub Desktop.
Save raimonizard/505b53fc258be7ac954291d18b67de88 to your computer and use it in GitHub Desktop.
Definició d'un OBJECT TYPE Bici usant Oracle BDOR

Creació del TYPE Bici

image

CREATE OR REPLACE TYPE Bici AS OBJECT(
  marca VARCHAR2(30),
  model VARCHAR2(30),
  tipus VARCHAR2(20),
  es_professional NUMBER(1),
  pes FLOAT,
  preu FLOAT,
  MEMBER FUNCTION getMarca RETURN VARCHAR2,
  MEMBER FUNCTION getPreu RETURN FLOAT,
  MEMBER PROCEDURE setPreu(pPreu FLOAT),
  MEMBER PROCEDURE toString,
  CONSTRUCTOR FUNCTION Bici(pMarca VARCHAR2, pModel VARCHAR2) RETURN SELF AS RESULT
);

/

Creació del TYPE BODY Bici

image

CREATE OR REPLACE TYPE BODY Bici AS
  MEMBER FUNCTION getMarca RETURN VARCHAR2 IS
  BEGIN
    RETURN SELF.marca;
  END;
  MEMBER FUNCTION getPreu RETURN FLOAT IS
  BEGIN
    RETURN SELF.preu;
  END;
  MEMBER PROCEDURE setPreu(pPreu FLOAT) IS
  BEGIN
    SELF.preu := pPreu;
  END;
  MEMBER PROCEDURE toString IS
  BEGIN
    DBMS_OUTPUT.PUT_LINE('La marca de la bici és: ' || SELF.marca || ' i el model és: ' || SELF.model);
  END;
  CONSTRUCTOR FUNCTION Bici(pMarca VARCHAR2, pModel VARCHAR2) RETURN SELF AS RESULT IS
  BEGIN
    SELF.marca := pMarca;
    SELF.model := pModel;
	RETURN ;
  END;
END;

/

Bloc PL/SQL que actua com a "Main"

DECLARE
 bici1 Bici;
 bici2 Bici;
BEGIN
 bici1 := NEW Bici('Orbea','Nose', 'BTT', 0, 10, 200);
 DBMS_OUTPUT.PUT_LINE('La marca de la bici és: ' || bici1.getMarca() || ' i el seu preu és: '|| bici1.getPreu());
 bici1.setPreu(1000);
 DBMS_OUTPUT.PUT_LINE('La marca de la bici és: ' || bici1.getMarca() || ' i el seu preu és: '|| bici1.getPreu());
 bici2 := NEW Bici('BMC', 'Alonso');
 bici2.toString();
END;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment