Create a table with Virtual Column in Oracle
Virtual column is the column in the table in which the value is derived from an expression or based on calculating from other columns
Syntax:
CREATE TABLE table_name (
col_name1 datatype,
col_name2 datatype
virtual_column_name AS (expression)
);
Example:
CREATE TABLE employees(
id INT,
employee_name VARCHAR2(50) NOT NULL,
rollno INT NOT NULL,
fee DEC(15,2) NOT NULL,
tax DEC(15,2) NOT NULL,
total_fee AS ((fee + ((fee*tax)/100)),
PRIMARY KEY(id)
);
You can also add a Virtual column later by ALTER command in Oracle:
ALTER TABLE table_name ADD (virtual_column_name AS (expression));
We can also use case statements on the Virtual column like:
ALTER TABLE students
ADD (
Grade_Marks AS (
CASE
WHEN Score between 90 and 100 THEN 'A+ Grade'
WHEN score between 75 and 89 THEN 'A Grade'
WHEN score between 74 and 60 THEN 'B Grade'
END)
)
Check table has virtual columns
select column_id, column_name, virtual_column, data_default from dba_tab_cols;