在视图中添加虚拟列

时间:2020-10-29 23:27:44

标签: sql oracle datetime sql-view

我想在视图中添加虚拟列age

该表定义为:

CREATE TABLE PERSON (
, FIRST_NAME VARCHAR2(25 BYTE) 
, LAST_NAME VARCHAR2(25 BYTE) NOT NULL 
, BIRTH_DATE DATE NOT NULL 
 )

我正在使用以下方法创建视图:

CREATE OR REPLACE VIEW v_person as SELECT
first_name,
last_name,
birth_date,
age (NUMBER(8,0)) generated always as(sysdate - birth_date) virtual
FROM
person;

我收到此错误:

ORA-00923: FROM keyword not found where expected
00923. 00000 -  "FROM keyword not found where expected"
*Cause:    
*Action:
    

2 个答案:

答案 0 :(得分:4)

视图 已经是一个虚拟数据结构。创建它的查询定义其列。只需将表达式添加到select

CREATE OR REPLACE VIEW v_person as 
SELECT
    first_name,
    last_name,
    birth_date,
    sysdate - birth_date as age
FROM person;

答案 1 :(得分:0)

视图是存储在数据库中的SQL,当我们从视图中选择时,我们实际上正在执行为该视图定义的查询。 视图中不能有虚拟列,可以在表中创建虚拟列,也可以在视图中定义列。

SELECT column1, column2  , (sysdate - birth_date)as age
FROM person;
相关问题