Evidentemente, no te servirá de nada una tabla que pueda contener objetos si no conocemos la manera de insertar objetos en la tabla.
La manera que tienes para ello es la misma que has utilizado para introducir datos de cualquier tipo habitual en las tablas de la base de datos: usando la sentencia INSERT
de SQL.
En las tablas habituales, cuando querías añadir una fila a una tabla que tenía un campo VARCHAR
le suministrabas a la sentencia INSERT
un dato de ese tipo. Pues si la tabla es de un determinado tipo de objetos, o si posee un campo de un determinado tipo de objeto, tendrás que suministrar a la sentencia INSERT
un objeto instanciado de su tipo de objeto correspondiente.
Por tanto, si queremos insertar un Usuario
en la tabla Gente
que hemos creado en el apartado anterior, previamente debemos crear el objeto o los objetos que se deseen insertar. A continuación podremos utilizarlos dentro de la sentencia INSERT
como si fueran valores simplemente.
DECLARE
u1 Usuario;
u2 Usuario;
BEGIN
u1 := NEW Usuario('luitom64', 'LUIS', 'TOMAS BRUNA', '24/10/2007', 50);
u2 := NEW Usuario('caragu72', 'CARLOS', 'AGUDO SEGURA', '06/07/2007', 100);
INSERT INTO UsuariosObj VALUES (u1);
INSERT INTO UsuariosObj VALUES (u2);
END;
De una manera más directa, puedes crear el objeto dentro de la sentencia INSERT
directamente, sin necesidad de guardar el objeto previamente en una variable:
INSERT INTO UsuariosObj VALUES (Usuario('luitom64', 'LUIS', 'TOMAS BRUNA', '24/10/2007', 50));
Podrás comprobar los resultados haciendo una consulta SELECT
sobre la tabla de la manera habitual:
SELECT * FROM UsuariosObj;
De manera similar puedes realizar la inserción de filas en tablas con columnas de tipo objeto. Por ejemplo, para la tabla Gente
que posee entre sus columnas, una de tipo objeto Usuario
, podríamos usar el formato de instanciar el objeto directamente en la sentencia INSERT
, o bien, indicar una variable que almacena un objeto que se ha instanciado anteriormente:
INSERT INTO Gente VALUES ('22900970P', Usuario('luitom64', 'LUIS', 'TOMAS BRUNA', '24/10/2007', 50), 54);
INSERT INTO Gente VALUES ('62603088D', u2, 21);