In this moment I'm working in SQL Developer and proving creation of different TYPES. For now this is the idea:
CREATE OR REPLACE TYPE actividad_t AS OBJECT(
nombre varchar2(50),
contenido varchar2(50),
plantilla varchar2(50),
nota float);
CREATE OR REPLACE TYPE vActividad_t AS VARRAY(5) OF actividad_t;
CREATE OR REPLACE TYPE asig_pers_act_t AS OBJECT(
dni varchar2(50),
id_asig int,
actividades vActividad_t,
MEMBER FUNCTION calc_media RETURN FLOAT,
MEMBER PROCEDURE mostrar_datos (SELF IN OUT NOCOPY asig_pers_act_t));
CREATE TABLE Asig_Pers_Act OF asig_pers_act_t;
INSERT INTO Asig_Pers_Act(dni, id_asig, actividades) VALUES
('11223344A', 3, vActividad_t(
('Actividad1', 'Contenido1', 'Plantilla1', 7),
('Actividad2', 'Contenido2', 'Plantilla2', 8.5),
('Actividad3', 'Contenido3', 'Plantilla3', 5),
('Actividad4', 'Contenido4', 'Plantilla4', 6.5),
('Actividad5', 'Contenido5', 'Plantilla5', 9)));
After execute the INSERT command the compiler show this in console:
Informe de error -
Error SQL: ORA-00907: falta el paréntesis derecho
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
Someone can help and tell me how to INSERT correctly in this case?
Create the elements of your varray as actividad_t
objects.
The following works for me:
INSERT INTO Asig_Pers_Act(dni, id_asig, actividades) VALUES
('11223344A', 3, vActividad_t(
actividad_t('Actividad1', 'Contenido1', 'Plantilla1', 7),
actividad_t('Actividad2', 'Contenido2', 'Plantilla2', 8.5),
actividad_t('Actividad3', 'Contenido3', 'Plantilla3', 5),
actividad_t('Actividad4', 'Contenido4', 'Plantilla4', 6.5),
actividad_t('Actividad5', 'Contenido5', 'Plantilla5', 9)));