Sql server 如何在Oracle中像在SQL Server中一样执行计算列

Sql server 如何在Oracle中像在SQL Server中一样执行计算列,sql-server,oracle,Sql Server,Oracle,如何在oracle中使用复合列创建这样的表: SQL Server中的表定义为: CREATE TABLE [dbo].[CCtestUsingSubstring] ( [EmpNumb] INT NOT NULL, [Designation] VARCHAR(50) NOT NULL, [DOBirth] DATETIME NOT NULL, [DORetirement] AS REPLACE([Designation],'E','O') ) insert in

如何在oracle中使用复合列创建这样的表:

SQL Server中的表定义为:

CREATE TABLE [dbo].[CCtestUsingSubstring] (
   [EmpNumb] INT NOT NULL, 
   [Designation] VARCHAR(50) NOT NULL, 
   [DOBirth] DATETIME NOT NULL, 
   [DORetirement] AS REPLACE([Designation],'E','O') )

insert into [CCtestUsingSubstring] values(1,'Developer',1/10/1992)

Select * from [CCtestUsingSubstring]
CREATE TABLE [dbo].[CCtestUsingSubstring] (
   [EmpNumb] INT NOT NULL, 
   [Designation] VARCHAR(50) NOT NULL, 
   [DOBirth] DATETIME NOT NULL, 
   [DORetirement] AS REPLACE([Designation],'E','O') )

insert into [CCtestUsingSubstring] values(1,'Developer',1/10/1992)

Select * from [CCtestUsingSubstring]
Oracle将此称为“虚拟列”:


这是在SQL中,如何在Oracle中执行相同的操作
CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
/
CREATE TABLE nested_table (id NUMBER, col1 my_tab_t)
       NESTED TABLE col1 STORE AS col1_tab;

INSERT INTO nested_table VALUES (1, my_tab_t('A'));
INSERT INTO nested_table VALUES (2, my_tab_t('B', 'C'));
INSERT INTO nested_table VALUES (3, my_tab_t('D', 'E', 'F'));
COMMIT;
CREATE TABLE CCtestUsingSubstring (
   EmpNumb INT NOT NULL, 
   Designation VARCHAR2(50) NOT NULL, 
   DOBirth DATE NOT NULL, 
   DORetirement AS (REPLACE(Designation,'e','O')));

insert into CCtestUsingSubstring (EmpNumb, Designation, DOBirth) 
values(1,'Developer',date '1992-10-01');

Select * from CCtestUsingSubstring