89 - Vistas (otras consideraciones: force) |
Una empresa almacena la información de sus empleados en una tabla llamada "empleados".
Eliminamos la tabla:
drop table empleados;
Eliminamos la vista "vista_empleados":
drop view vista_empleados;
Creamos la vista "vista_empleados" que muestre algunos campos de "empleados", pero la tabla "empleados" no existe, por ello, debemos agregar, al crear la vista "force":
create force view vista_empleados as select documento,nombre,seccion from empleados;
Creamos la tabla:
create table empleados( documento char(8), nombre varchar2(30), domicilio varchar2(30), seccion varchar2(30) );
Ingresamos algunos registros:
insert into empleados values('22222222','Lopez Ana','Colon 123','Sistemas'); insert into empleados values('23333333','Lopez Luis','Sucre 235','Sistemas'); insert into empleados values('24444444','Garcia Marcos','Sarmiento 1234','Contaduria'); insert into empleados values('25555555','Gomez Pablo','Bulnes 321','Contaduria'); insert into empleados values('26666666','Perez Laura','Peru 1254','Secretaria');
Consultamos la vista:
select *from vista_empleados;
Veamos el texto de la vista consultando "user_views":
select view_name,text from user_views where view_name='VISTA_EMPLEADOS';
Creamos o reemplazamos (si existe) la vista "vista_empleados" que muestre todos los campos de la tabla "empleados":
create or replace view vista_empleados as select *from empleados;
Consultamos la vista:
select *from vista_empleados;
Agregamos un campo a la tabla "empleados":
alter table empleados add sueldo number(6,2);
Consultamos la vista "vista_empleados":
select *from vista_empleados;
Note que el nuevo campo agregado a "empleados" no aparece, a pesar que la vista indica que muestre todos los campos de dicha tabla; esto sucede porque los campos se seleccionan al ejecutar "create view", para que aparezcan debemos volver a crear la vista:
create or replace view vista_empleados as select *from empleados;
Consultemos la vista:
select *from vista_empleados;
Ahora si aparece el nuevo campo "sueldo" de "empleados";
drop table empleados; drop view vista_empleados; -- Creamos la vista "vista_empleados" que muestre algunos campos de "empleados", -- pero la tabla "empleados" no existe, por ello, debemos agregar, al crear -- la vista "force": create force view vista_empleados as select documento,nombre,seccion from empleados; -- Creamos la tabla: create table empleados( documento char(8), nombre varchar2(30), domicilio varchar2(30), seccion varchar2(30) ); insert into empleados values('22222222','Lopez Ana','Colon 123','Sistemas'); insert into empleados values('23333333','Lopez Luis','Sucre 235','Sistemas'); insert into empleados values('24444444','Garcia Marcos','Sarmiento 1234','Contaduria'); insert into empleados values('25555555','Gomez Pablo','Bulnes 321','Contaduria'); insert into empleados values('26666666','Perez Laura','Peru 1254','Secretaria'); -- Consultamos la vista: select *from vista_empleados; -- Veamos el texto de la vista consultando "user_views": select view_name,text from user_views where view_name='VISTA_EMPLEADOS'; -- Creamos o reemplazamos (si existe) la vista "vista_empleados" que muestre -- todos los campos de la tabla "empleados": create or replace view vista_empleados as select *from empleados; -- Consultamos la vista: select *from vista_empleados; -- Agregamos un campo a la tabla "empleados": alter table empleados add sueldo number(6,2); -- Consultamos la vista "vista_empleados": select * from vista_empleados; -- Note que el nuevo campo agregado a "empleados" no aparece, -- a pesar que la vista indica que muestre todos los campos -- de dicha tabla; esto sucede porque los campos se seleccionan -- al ejecutar "create view", para que aparezcan debemos volver -- a crear la vista: create or replace view vista_empleados as select *from empleados; -- Consultemos la vista: select * from vista_empleados;
La ejecución de este lote de comandos SQL genera una salida similar a: