Las columnas virtuales constituyen una de las nuevas características introducidas en Oracle Database 11g e incluida en la Edición Express 11g Versión 2 y posteriores. Consiste en campos que obtienen sus valores a partir de expresiones que hacen referencia a otras columnas, tales expresiones pueden incluir llamadas a funciones.
Un ejemplo concreto: Crearemos una tabla que registre la venta de productos agregando los campos siguientes:
compra_id, producto_id, precio, cantidad, importe.
- Ejecutar la línea de comandos SQL.
- Conectarse como usuario SYSTEM:
conn system/sucontraseña@localhost:1521/XEPDB1
- Crear un usuario con nombre: SHOP.
CREATE USER SHOP IDENTIFIED BY XYZ2011 DEFAULT TABLESPACE USERS;
4. Otorgar roles CONNECT y RESOURCE.
GRANT CONNECT,RESOURCE TO SHOP;
5. Desconectarse con el comando disc;
SQL>disc;
6. Conectarse como usuario SHOP.
CONN SHOP/XYZ2011@localhost:1521/XEPDB1
7. Introducir la siguiente sentencia:
CREATE TABLE VENTAS(
PRODUCTO_ID NUMBER(6) NOT NULL,
COMPRA_ID NUMBER(5) NOT NULL,
CANTIDAD NUMBER(7,3) NOT NULL,
PRECIO NUMBER(7,3) NOT NULL,
IMPORTE NUMBER GENERATED ALWAYS AS
(CANTIDAD*PRECIO) VIRTUAL
(CANTIDAD*PRECIO) VIRTUAL
);
8. Insertar un registro de prueba.
INSERT INTO VENTAS( PRODUCTO_ID,
COMPRA_ID,
CANTIDAD,
PRECIO)
VALUES(220,350,10,20.35);
9. Seleccionar el registro insertado con la sentencia:
SELECT *
FROM VENTAS;
Espero sirva de ayuda.
Roberto Párraga Zambrano