Insert object values ​​into a PL / SQL table without specifying attributes

I have the following diagram

DROP TABLE ALUMNO_ASIGNATURA; DROP TABLE ASIGNATURA; DROP TABLE TITULACION; DROP TABLE PROFESOR; DROP TABLE ALUMNO; DROP TABLE PERSONA; CREATE TABLE PERSONA ( DNI VARCHAR2(9) CONSTRAINT PERSONA_PK PRIMARY KEY, NOMBRE VARCHAR2(20) CONSTRAINT PERSONA_NOMBRE_NN NOT NULL, APELLIDO VARCHAR2(30) CONSTRAINT PERSONA_APELLIDO_NN NOT NULL, CIUDAD VARCHAR2(20), DIRECCIONCALLE VARCHAR2(30), DIRECCIONNUM VARCHAR2(3), TELEFONO VARCHAR2(9), FECHANACIMIENTO DATE, VARON VARCHAR2(1) CONSTRAINT PERSONA_VARON_NN NOT NULL CONSTRAINT PERSONA_VARON_CK CHECK (VARON BETWEEN 0 AND 1) ); COMMENT ON COLUMN persona.varon IS '0 para mujer, 1 para hombre'; CREATE TABLE PROFESOR ( IDPROFESOR VARCHAR2(4) CONSTRAINT PROFESOR_PK PRIMARY KEY, DNI VARCHAR2(9) CONSTRAINT PROFESOR_DNI_NN NOT NULL CONSTRAINT PROFESOR_PERSONA_FK REFERENCES PERSONA (DNI) ON DELETE CASCADE ); CREATE TABLE ALUMNO ( IDALUMNO VARCHAR2(7) CONSTRAINT ALUMNO_PK PRIMARY KEY, DNI VARCHAR2(9) CONSTRAINT ALUMO_DNI_NN NOT NULL CONSTRAINT ALUMNO_PERSONA_FK REFERENCES PERSONA (DNI) ON DELETE CASCADE ); CREATE TABLE TITULACION ( IDTITULACION VARCHAR2(6) CONSTRAINT TITULACION_PK PRIMARY KEY, NOMBRE VARCHAR2(30) CONSTRAINT TITULACION_NOMBRE_NN NOT NULL ); CREATE TABLE ASIGNATURA ( IDASIGNATURA VARCHAR2(6) CONSTRAINT ASIGNATURA_PK PRIMARY KEY, NOMBRE VARCHAR2(50) CONSTRAINT ASIGNATURA_NOMBRE_NN NOT NULL, CREDITOS NUMBER(3,1), CUATRIMESTRE VARCHAR2(1), COSTEBASICO NUMBER(16,2), IDPROFESOR VARCHAR2(4) CONSTRAINT ASIGNATURA_PROFESOR_FK REFERENCES PROFESOR (IDPROFESOR) ON DELETE SET NULL, IDTITULACION VARCHAR2(6) CONSTRAINT ASIGNATURA_IDTITULACION_NN NOT NULL CONSTRAINT ASIGNATURA_TITULACION_FK REFERENCES TITULACION (IDTITULACION) ON DELETE CASCADE, CURSO VARCHAR2(1) ); CREATE TABLE ALUMNO_ASIGNATURA ( IDALUMNO VARCHAR2(7) CONSTRAINT ALUMNO_ASIGNATURA_ALUMNO_FK REFERENCES ALUMNO (IDALUMNO) ON DELETE CASCADE, IDASIGNATURA VARCHAR2(6) CONSTRAINT ALUMNO_ASIGNATURA_ASIGNAT_FK REFERENCES ASIGNATURA (IDASIGNATURA) ON DELETE CASCADE, NUMEROMATRICULA VARCHAR2(1) CONSTRAINT ALUMNO_ASIGNATURA_NUM_MATR_NN NOT NULL, CONSTRAINT ALUMNO_ASIGNATURA_PK PRIMARY KEY (IDALUMNO, IDASIGNATURA) ); --ALTER TABLE ALUMNO ADD CONSTRAINT ALUMNO_DNI_UQ UNIQUE (DNI); --ALTER TABLE PROFESOR ADD CONSTRAINT PROFESOR_DNI_UQ UNIQUE (DNI); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('02852373F','Noelia','Ruiz','Madrid','Romeral','34','916432348',to_date('23/09/74','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('07634664I','Benito','Encinas','Madrid','Polar','67','916436467',to_date('30/01/67','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('10210210B','Juan','Perez','Teruel','Teruel','56','936111111',to_date('01/02/70','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('12354123T','Gregorio','Llamas','Sevilla','Ro','67','942133336',to_date('17/08/79','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('12456789B','Encarna','Loles','Huesca','Huesca','67','955674523',to_date('18/06/78','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('16161616A','Luis','Ramírez','Haro','Pez','34','941111111',to_date('01/01/69','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('17171717A','Laura','Beltrán','Madrid','Gran Vía','23','912121212',to_date('08/08/74','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('18181818A','Pepe','Pérez','Madrid','Percebe','13','913131313',to_date('02/02/80','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('19191919A','Juan','Sánchez','Bilbao','Melancolía','7','944141414',to_date('03/03/66','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('20202020A','Luis','Jiménez','Nájera','Cigüeña','15','941151515',to_date('03/03/79','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('20220220B','Luis','Valiente','Lugo','San Cristobal','23','956567893',to_date('13/04/60','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('21123124R','Javier','Maganto','Madrid','Fax','23','917643653',to_date('16/07/78','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('21212121A','Rosa','García','Haro','Alegría','16','941161616',to_date('04/04/78','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('23232323A','Jorge','Sáenz','Logroño','Luis Ulloa','17','941171717',to_date('09/09/78','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('24242424A','María','Gutiérrez','Logroño','Avda. de la Paz','18','941181818',to_date('10/10/64','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('25252525A','Rosario','Díaz','Logroño','Percebe','19','941191919',to_date('11/11/71','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('26262626A','Elena','González','Logroño','Percebe','20','941202020',to_date('05/05/75','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('30303030B','Pedro','Del Río','Zamora','Antequera','89','967653424',to_date('18/12/68','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('32456245H','Gustavo','Pérez','Valencia','Numancia','234','947676576',to_date('25/04/79','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('37634764E','Mariano','Rodriguez','Madrid','Sal','56','917334653',to_date('23/05/78','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('41515151C','Eduardo','Rodriguez','Valladolid','Roquera','67','956666666',to_date('14/06/75','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('42456487E','Rita','Cantora','Soria','Robles','67','956433423',to_date('24/11/69','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('44212123J','Paloma','Morales','Madrid','Gotan','34','917636436',to_date('12/12/84','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('50101010D','María','Sanz','Malaga','Ronda','8','956454545',to_date('13/05/67','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('54343433T','Alfonso','Cuevas','Valencia','Valencia','45','937845754',to_date('18/07/68','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('57632786G','Susana','Moral','Guadalajara','Gran Vía','35','915762646',to_date('17/08/75','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('63256769H','José','Dorado','Sevilla','Al Andalus','27','945685548',to_date('12/04/78','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('63456432G','Esther','Barahona','Valencia','Valencia','123','935476548',to_date('24/06/79','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('64329354E','Cristina','Santos','Madrid','Evaristo','1','912376475',to_date('18/10/67','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('64423568C','Rocío','García','Madrid','Plaza de España','89','912347890',to_date('12/10/72','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('76347852I','Marta','Canton','Huelva','Flor','56','967764435',to_date('25/04/78','DD/MM/RR'),'0'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('76453435G','Joaquín','Carmona','Valencia','Caracas','12','937634566',to_date('17/04/75','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('76529637F','Rodolfo','Sanz','Madrid','Monasterio','88','915643258',to_date('15/12/80','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('76666436D','Gerardo','Prado','Madrid','Del Olmo','145','917643643',to_date('15/06/67','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('84545680F','Daniel','Chavero','Madrid','jázmin','34','917664764',to_date('23/06/67','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('86546543R','Rufino','Mellado','Sevilla','Rufino','45','948765676',to_date('16/04/76','DD/MM/RR'),'1'); Insert into PERSONA (DNI,NOMBRE,APELLIDO,CIUDAD,DIRECCIONCALLE,DIRECCIONNUM,TELEFONO,FECHANACIMIENTO,VARON) values ('86876755F','Clara','Estévez','Madrid','Barco','34','919536754',to_date('23/03/67','DD/MM/RR'),'0'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P101','19191919A'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P102','10210210B'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P117','25252525A'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P202','20220220B'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P203','23232323A'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P204','26262626A'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P303','30303030B'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P304','24242424A'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P415','41515151C'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P500','50101010D'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P600','37634764E'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P777','86876755F'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P888','63256769H'); Insert into PROFESOR (IDPROFESOR,DNI) values ('P999','76347852I'); Insert into ALUMNO (IDALUMNO,DNI) values ('A010101','21212121A'); Insert into ALUMNO (IDALUMNO,DNI) values ('A020202','18181818A'); Insert into ALUMNO (IDALUMNO,DNI) values ('A030303','20202020A'); Insert into ALUMNO (IDALUMNO,DNI) values ('A040404','26262626A'); Insert into ALUMNO (IDALUMNO,DNI) values ('A050505','12456789B'); Insert into ALUMNO (IDALUMNO,DNI) values ('A060606','64423568C'); Insert into ALUMNO (IDALUMNO,DNI) values ('A070707','42456487E'); Insert into ALUMNO (IDALUMNO,DNI) values ('A080808','76529637F'); Insert into ALUMNO (IDALUMNO,DNI) values ('A090909','64329354E'); Insert into ALUMNO (IDALUMNO,DNI) values ('A101010','02852373F'); Insert into ALUMNO (IDALUMNO,DNI) values ('A121212','16161616A'); Insert into ALUMNO (IDALUMNO,DNI) values ('A122143','21123124R'); Insert into ALUMNO (IDALUMNO,DNI) values ('A131313','17171717A'); Insert into ALUMNO (IDALUMNO,DNI) values ('A232358','07634664I'); Insert into ALUMNO (IDALUMNO,DNI) values ('A256346','32456245H'); Insert into ALUMNO (IDALUMNO,DNI) values ('A344746','76453435G'); Insert into ALUMNO (IDALUMNO,DNI) values ('A444378','57632786G'); Insert into ALUMNO (IDALUMNO,DNI) values ('A465665','44212123J'); Insert into ALUMNO (IDALUMNO,DNI) values ('A653344','86546543R'); Insert into ALUMNO (IDALUMNO,DNI) values ('A654455','84545680F'); Insert into ALUMNO (IDALUMNO,DNI) values ('A747647','63456432G'); Insert into ALUMNO (IDALUMNO,DNI) values ('A754576','76666436D'); Insert into ALUMNO (IDALUMNO,DNI) values ('A796476','54343433T'); Insert into ALUMNO (IDALUMNO,DNI) values ('A834532','12354123T'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('100007','Físicas'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('100011','Políticas'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('100042','Dirección de empresas'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('100043','Economía'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('110010','Ingeniería Industrial'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('110052','Ingeniero Industrial'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('110053','Informática Sistemas'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('110054','Informática Gestión'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('110055','Ingeniero en Informática'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('120001','Derecho'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('130043','Educación social'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('130047','Psicología'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('130048','Pedagogía'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('130049','Psicopedagogía'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('130061','Trabajo Social'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('130110','Matemáticas'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('140034','Filosofía'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('140044','Historia'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('140045','Filología Hispánica'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('140046','Filología Inglesa'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('150210','Químicas'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('160000','Empresariales'); Insert into TITULACION (IDTITULACION,NOMBRE) values ('170056','Turismo'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('000115','Seguridad Vial', '4,5','1','30','P204','170056','1'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('076767','Ampliación de informática gráfica', '6','1','658,89','P500','110053','4'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('097343','Algoritmos paralelos', '6','1','78','P500','110054','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('123536','Ampliación de estructura de computadores', '4,5','2','68,89','P600','110054','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('130113','Programación I', '9','1','60','P101','130110','1'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('130122','Análisis II', '9','2','60','P203','130110','2'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('150212','Química Física', '4,5','2','70','P304','150210','1'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('160002','Contabilidad', '6','1','70','P117','160000','1'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('213123','Automatización industrial', '6','2','78,89','P303','110052','2'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('232325','Ampliación de redes', '6','1','78,9','P888','110054','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('323336','Algoritmos y estructuras de datos II', '4,5','2','45,67','P500','110053','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('324234','Aplicaciones específicas de red', '4,5','1','67,67','P888','110054','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('455457','Álgebra', '4,5','1','78','P415','110054','2'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('484847','Ampliación de arquitectura de computadores', '9','2','45,89','P600','110053','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('634437','Administración avanzada de sistemas informáticos', '9','1','110,89','P415','110054','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('765376','Antecedentes y evolución de la informática', '6','2','87,56','P202','110054','2'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('786476','Análisis de datos', '9','2','76,89','P999','110055','2'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('856557','Algoritmos y estructuras de datos I', '9','2','67','P500','110053','2'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('872464','Ampliación de electrónica', '6','1','56,09','P203','110052','2'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('896476','Arquitecturas avanzadas', '9','2','34,89','P600','110055','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('897478','Ampliación de inteligencia artificial', '9','2','56,89','P600','110055','4'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('976677','Análisis matemático', '6','2','764,89','P203','130110','3'); Insert into ASIGNATURA (IDASIGNATURA,NOMBRE,CREDITOS,CUATRIMESTRE,COSTEBASICO,IDPROFESOR,IDTITULACION,CURSO) values ('986796','Arquitectura e Ingenieria de los computadores', '6','2','45,89','P600','110055','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A010101','150212','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A020202','130113','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A020202','150212','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A030303','130113','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A030303','130122','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A030303','150212','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A040404','130122','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A121212','000115','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A122143','130113','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A122143','130122','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A122143','976677','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A131313','160002','4'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A232358','076767','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A232358','323336','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A232358','856557','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A256346','786476','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A256346','896476','4'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A256346','897478','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A256346','986796','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A344746','213123','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A344746','872464','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A444378','097343','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A444378','123536','4'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A444378','232325','5'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A444378','324234','5'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A444378','455457','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A444378','634437','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A444378','765376','5'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A465665','786476','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A465665','896476','4'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A465665','897478','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A465665','986796','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A653344','213123','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A653344','872464','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A654455','097343','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A654455','123536','4'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A654455','455457','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A654455','634437','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A747647','213123','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A747647','872464','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A754576','130113','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A754576','130122','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A754576','976677','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A796476','130113','1'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A796476','130122','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A796476','976677','3'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A834532','213123','2'); Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A834532','872464','1'); COMMIT; 

I created an object type called "AsignaturaObj" that displays the rows from the Asignatura table, and I would like to know if objects can be inserted into the table without specifying all its attributes:

 SET SERVEROUTPUT ON declare contador pls_integer; begin -- tengo que borrar antiguas dependencias entre objetos para poder recrear los míos select count(*) into contador from user_objects where object_name=upper('TablaAsignatura'); if contador = 1 then execute immediate 'drop type TablaAsignatura'; end if; select count(*) into contador from user_objects where object_name=upper('AsignaturaObj'); if contador = 1 then execute immediate 'drop type AsignaturaObj'; end if; end; / CREATE TYPE AsignaturaObj AS OBJECT( idAsignatura varchar2(6), nombre varchar2(50), curso number(1,0), -- en el original curso y cuatrimestre son varchar2, lo he cambiado por probar cuatrimestre number(1,0), créditos number(3,1), coste number(6,2), -- no necesitamos un número de 16 dígitos como en el original idProfesor varchar2(4), idTitulación varchar2(6) ); / CREATE OR REPLACE TYPE TablaAsignatura AS TABLE OF AsignaturaObj; / declare conjuntoAsignaturas tablaAsignatura := TablaAsignatura(); miAsignatura AsignaturaObj; begin conjuntoAsignaturas.extend(3); conjuntoAsignaturas(1) := asignaturaObj('222222', 'Pulpos', 2, 1, '4,5', 120, 'Q000', '111111'); conjuntoAsignaturas(2) := asignaturaObj('222223', 'Pólipos', 2, 1, '3', 80, 'Q000', '222222'); conjuntoAsignaturas(3) := asignaturaObj('130114', 'Programación II', 2, 1, '9', 80, 'P101', '130110'); miAsignatura := asignaturaObj('130114', 'Programación II', 2, 1, '9', 80, 'P101', '130110'); -- THIS WORKS OBVIOUSLY insert into asignatura(idAsignatura, nombre, curso, cuatrimestre, creditos, costebasico, idProfesor, idTitulacion) values ('130114', 'Programación II', 2, 1, '9', 80, 'P101', '130110'); -- THIS WORKS TOO, BUT IT NOT VERY COMFORTABLE TO SPECIFY "OBJECTNAME DOT ATTRIBUTE", NOT ONLY COS THE NUMBER OF ATTRIBUTES CAN BE HIGH BUT ALSO THINK ABOUT USING ANOTHER OBJECT insert into asignatura(idAsignatura, nombre, curso, cuatrimestre, creditos, costebasico, idProfesor, idTitulacion) values (miAsignatura.idAsignatura, miAsignatura.nombre, miAsignatura.curso, miAsignatura.cuatrimestre, miAsignatura.créditos, miAsignatura.coste, miAsignatura.idProfesor, miAsignatura.idTitulación);*/ -- BUT THIS DOES NOT :( insert into asignatura(idAsignatura, nombre, curso, cuatrimestre, creditos, costebasico, idProfesor, idTitulacion) values (miAsignatura.*); end; / --select * from asignatura where idtitulacion = '130110'; rollback; 

Please note that the order and name of the fields of the object is not quite the same as in the table, for example. AsignaturaObj.idTitulación (with accent) and asignatura.idTitulacion.

The following code refers to @ Alex-Poole's comment on his own answer about what my motivation for using FORALL was for.

 declare conjuntoAsignaturas tablaAsignatura := TablaAsignatura(); begin conjuntoAsignaturas.extend(4); conjuntoAsignaturas(1) := asignaturaObj('130114', 'Programación II', 2, 1, '9', 80, 'P101', '130110'); conjuntoAsignaturas(2) := asignaturaObj('222222', 'Teoría de Compiladores', 2, 1, '4,5', 120, 'Q000', '130110'); conjuntoAsignaturas(3) := asignaturaObj('222223', 'Pólipos', 2, 1, '3', 80, 'P101', '222222'); DECLARE l_error_count NUMBER; ex_dml_errors EXCEPTION; PRAGMA EXCEPTION_INIT(ex_dml_errors, -24381); BEGIN forall i in 1 .. conjuntoAsignaturas.count SAVE EXCEPTIONS insert into asignatura(idAsignatura, nombre, curso, cuatrimestre, creditos, costebasico, idProfesor, idTitulacion) values (TREAT(conjuntoAsignaturas(i) AS AsignaturaObj).idAsignatura, TREAT(conjuntoAsignaturas(i) AS AsignaturaObj).nombre, TREAT(conjuntoAsignaturas(i) AS AsignaturaObj).curso, TREAT(conjuntoAsignaturas(i) AS AsignaturaObj).cuatrimestre, TREAT(conjuntoAsignaturas(i) AS AsignaturaObj).créditos, TREAT(conjuntoAsignaturas(i) AS AsignaturaObj).coste, TREAT(conjuntoAsignaturas(i) AS AsignaturaObj).idProfesor, TREAT(conjuntoAsignaturas(i) AS AsignaturaObj).idTitulación); EXCEPTION WHEN ex_dml_errors THEN l_error_count := SQL%BULK_EXCEPTIONS.count; DBMS_OUTPUT.put_line('Número de errores: ' || l_error_count); FOR i IN 1 .. l_error_count LOOP DBMS_OUTPUT.put_line('Error: ' || i || ' Índice de error: ' || SQL%BULK_EXCEPTIONS(i).error_index || ' Mensaje: ' || SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE)); END LOOP; END; end; / 
+5
source share
2 answers

You cannot escape attribute references anywhere, but you can hide them inside an object.

One option is to have a member function that returns the attribute values ​​in the order in which they appear in the table using the ref cursor:

 CREATE TYPE AsignaturaObj AS OBJECT( ... MEMBER FUNCTION attrsAsCols RETURN sys_refcursor ); / CREATE OR REPLACE TYPE BODY AsignaturaObj AS MEMBER FUNCTION attrsAsCols RETURN sys_refcursor IS temp_rc sys_refcursor; BEGIN OPEN temp_rc FOR SELECT SELF.idAsignatura, SELF.nombre, SELF.créditos, SELF.cuatrimestre, SELF.coste, SELF.idProfesor, SELF.idTitulación, SELF.curso FROM DUAL; RETURN temp_rc; END attrsAsCols; END; / 

Then, in your anonymous block, select this cursor in the rowtype variable and use it to insert:

 declare temp_row asignatura%rowtype; temp_rc sys_refcursor; ... begin ... temp_rc := conjuntoAsignaturas(3).attrsAsCols; fetch temp_rc into temp_row; insert into asignatura values temp_row; end; / anonymous block completed select * from asignatura where idtitulacion = '130110'; IDASIGNATURA NOMBRE CREDITOS CUATRIMESTRE COSTEBASICO IDPROFESOR IDTITULACION CURSO ------------ -------------------------------------------------- ---------- ------------ ----------- ---------- ------------ ----- 130113 Programación I 9 1 60 P101 130110 1 130122 Análisis II 9 2 60 P203 130110 2 976677 Análisis matemático 6 2 764,89 P203 130110 3 130114 Programación II 9 1 80 P101 130110 2 

Of course, relies on your object, putting the attributes in the correct order to define your table, and this makes the object more complex; but simplifies insertion.

Another option is to encapsulate the paste operation in the participant procedure:

 CREATE TYPE AsignaturaObj AS OBJECT( ... MEMBER PROCEDURE doInsert ); / CREATE OR REPLACE TYPE BODY AsignaturaObj AS MEMBER PROCEDURE doInsert IS BEGIN insert into asignatura(idAsignatura, nombre, curso, cuatrimestre, creditos, costebasico, idProfesor, idTitulacion) values (SELF.idAsignatura, SELF.nombre, SELF.curso, SELF.cuatrimestre, SELF.créditos, SELF.coste, SELF.idProfesor, SELF.idTitulación); END doInsert; END; / 

And then your insert will become simple:

 declare ... conjuntoAsignaturas(3).doInsert; end; / anonymous block completed select * from asignatura where idtitulacion = '130110'; IDASIGNATURA NOMBRE CREDITOS CUATRIMESTRE COSTEBASICO IDPROFESOR IDTITULACION CURSO ------------ -------------------------------------------------- ---------- ------------ ----------- ---------- ------------ ----- 130113 Programación I 9 1 60 P101 130110 1 130122 Análisis II 9 2 60 P203 130110 2 976677 Análisis matemático 6 2 764,89 P203 130110 3 130114 Programación II 9 1 80 P101 130110 2 

This means that the object is still relying on an existing table, if not on the order of the columns.

+3
source

I don't know if this answers part of your question, or maybe this is something you could use.

But in your example, I see you are using a lot:

 Insert into ALUMNO_ASIGNATURA (IDALUMNO,IDASIGNATURA,NUMEROMATRICULA) values ('A444378','232325','5'); 

Maybe it will be an idea to write a procedure for it that will insert data into the table, so you do not need to call all the columns every time.

For example: (I do not have a database manually, so I hope this will not give any errors, but it will give you an idea.)

 CREATE OR REPLACE PROCEDURE addAlumnoAsignature(columnOne IN VARCHAR2, columnTwo IN VARCHAR2) AS BEGIN INSERT INTO AlumnoAsignature(columOneName, columnTwoName) VALUES(columnOne, columnTwo) END; / 

If you want to insert something into the table, you only need to call the procedure.
For instance:

 addAlumnoAsignature('A444378', '232325') 

I believe that you can also make sure that some value goes to a certain part of the input:
But then again, I don't have a database manually, so it can give you more ideas. :-)

 addAlumnoAsignature(columnOne => 'A444378', columnTwo => '232325') 

If you drop the table more often, you want to restore the data in the table.
You can make a file with:

 BEGIN addAlumnoAsignature('A444378', '232325') END; / 

So, you just need to run this file to enter all the data into the table again.

If you want something to be entered in tableA, and you want the information to be inserted / updated in tableB as well, you can use Trigger . Place the trigger on tableA, which is activated when an INSERT or UPDATE occurred.

You can make Trigger have it retrieve data from TableA, and give it a procedure that will be stored in table B.

0
source

All Articles