/* CREATE OR REPLACE TYPE person_typ AS OBJECT ( idno NUMBER, name VARCHAR2(30), phone VARCHAR2(20), MAP MEMBER FUNCTION get_idno RETURN NUMBER, MEMBER FUNCTION show RETURN VARCHAR2) NOT FINAL; / */ CREATE OR REPLACE TYPE Ordenador AS OBJECT ( referencia CHAR (7), marca VARCHAR2 (20), procesador VARCHAR2(20), capacidadRam VARCHAR2 (20), capacidadDisco NUMBER, precio NUMBER(4,2), stock NUMBER, MEMBER FUNCTION getRam RETURN VARCHAR2, MEMBER FUNCTION getDisco RETURN NUMBER, MEMBER FUNCTION getCPU RETURN VARCHAR2, MEMBER FUNCTION calculaPrecioDescuento (descuento INT) RETURN NUMBER, MEMBER FUNCTION stockSuficiente (cantidadPedido INT) RETURN NUMBER, MEMBER PROCEDURE mostrarInfo )NOT FINAL; / /* CREATE OR REPLACE TYPE BODY person_typ AS MAP MEMBER FUNCTION get_idno RETURN NUMBER IS BEGIN RETURN idno; END; -- function that can be overriden by subtypes MEMBER FUNCTION show RETURN VARCHAR2 IS BEGIN RETURN 'Id: ' || TO_CHAR(idno) || ', Name: ' || name; END; END; / */ CREATE OR REPLACE TYPE BODY Ordenador AS MEMBER FUNCTION getRam RETURN VARCHAR2 IS BEGIN RETURN capacidadRam; END; MEMBER FUNCTION getDisco RETURN NUMBER IS BEGIN RETURN capacidadDisco/1024; END; MEMBER FUNCTION getCPU RETURN VARCHAR2 IS BEGIN RETURN procesador; END; MEMBER FUNCTION calculaPrecioDescuento (descuento INT) RETURN NUMBER IS BEGIN RETURN precio - descuento; END; MEMBER FUNCTION stockSuficiente (cantidadPedido INT) RETURN NUMBER IS BEGIN IF stock>= cantidadPedido THEN RETURN 1; ELSE RETURN 0; END IF; END; MEMBER PROCEDURE mostrarInfo AS BEGIN DBMS_OUTPUT.PUT_LINE('DATOS DEL ORDENADOR'); DBMS_OUTPUT.PUT_LINE('marca:' || marca); DBMS_OUTPUT.PUT_LINE('procesador:' || procesador); DBMS_OUTPUT.PUT_LINE('RAM:' || capacidadRam); DBMS_OUTPUT.PUT_LINE('Disco:' || capacidadDisco); DBMS_OUTPUT.PUT_LINE('Precio:' || precio); END mostrarInfo; END; / /* -- requires Ex. 2-14 CREATE TYPE student_typ UNDER person_typ ( dept_id NUMBER, major VARCHAR2(30), OVERRIDING MEMBER FUNCTION show RETURN VARCHAR2) NOT FINAL; / */ CREATE OR REPLACE TYPE Portatil UNDER Ordenador ( tamanoPantalla NUMBER, tactil INT, funda INT, MEMBER FUNCTION esTactil RETURN INT, MEMBER FUNCTION tieneFunda RETURN INT, OVERRIDING MEMBER PROCEDURE mostrarInfo ); / /* CREATE TYPE BODY student_typ AS OVERRIDING MEMBER FUNCTION show RETURN VARCHAR2 IS BEGIN RETURN (self AS person_typ).show || ' -- Major: ' || major ; END; END; / */ CREATE OR REPLACE TYPE BODY Portatil AS MEMBER FUNCTION esTactil RETURN INT IS BEGIN IF tactil = 1 THEN RETURN 1; ELSE RETURN 0; END IF; END; MEMBER FUNCTION tieneFunda RETURN INT IS BEGIN IF funda = 1 THEN RETURN 1; ELSE RETURN 0; END IF; END; OVERRIDING MEMBER PROCEDURE mostrarInfo AS BEGIN DBMS_OUTPUT.PUT_LINE('DATOS DEL ORDENADOR'); DBMS_OUTPUT.PUT_LINE('marca:' || marca); DBMS_OUTPUT.PUT_LINE('CPU:' || procesador); DBMS_OUTPUT.PUT_LINE('RAM:' || capacidadRam); DBMS_OUTPUT.PUT_LINE('Disco:' || capacidadDisco); DBMS_OUTPUT.PUT_LINE('Precio:' || precio); DBMS_OUTPUT.PUT_LINE('Tamaño Pantalla:' || tamanoPantalla); DBMS_OUTPUT.PUT_LINE('¿Es táctil?:' || esTactil); DBMS_OUTPUT.PUT_LINE('Funda:' || tieneFunda); END mostrarInfo; END; / CREATE TABLE tblPortatil2 OF Portatil;
Write, Run & Share PL/SQL code online using OneCompiler's Oracle PL/SQL online editor and compiler for free. It's one of the robust, feature-rich online editor and compiler for Oracle PL/SQL running on latest version 23c (23.3.0.0). Getting started with the OneCompiler's Oracle PL/SQL editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'PL/SQL' and start writing code to learn and test online without worrying about tedious process of installation.
PL/SQL is procedural extension for SQL created by Oracle. It is by default embedded into the Oracle Database. PL/SQL program units are compiled and stored inside the Oracle Database which results in optimal execution times as the PL/SQL and SQL run within the same server process.
Following is the syntax structure for the PL/SQL code blocks
DECLARE
<declarations section>
BEGIN
<executable command(s)>
EXCEPTION
<exception handling>
END;
DECLARE
message varchar2(100):= 'Hello, World!';
BEGIN
dbms_output.put_line(message);
END;
/
CREATE OR REPLACE FUNCTION
hello_user
(user_name IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
RETURN 'Hello ' || user_name;
END hello_user;
/
BEGIN
dbms_output.put_line(hello_user('Peter'));
END;
/
BEGIN
DBMS_OUTPUT.put_line (1/0);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('error is: ' || SQLERRM);
END;