我有一个表TEST_ORD
,其中有列 ORD_DAYID,它是虚拟列。我想知道这个 coumn 中的值是从哪里以及如何填充的。因为我不能在插入语句中使用该列,因为它是虚拟列。
我尝试了下面的查询,但它没有给我从哪里以及如何填充列中的值的信息:
Select * from all_source where upper(TEST) like '%TEST_ORD_ID%';
我有一个表TEST_ORD
,其中有列 ORD_DAYID,它是虚拟列。我想知道这个 coumn 中的值是从哪里以及如何填充的。因为我不能在插入语句中使用该列,因为它是虚拟列。
我尝试了下面的查询,但它没有给我从哪里以及如何填充列中的值的信息:
Select * from all_source where upper(TEST) like '%TEST_ORD_ID%';
用于生成虚拟列的表达式列在视图DATA_DEFAULT
列中。[DBA|ALL|USER]_TAB_COLUMNS
例如:
使用将根据定义填充的虚拟列创建表。
CREATE drop TABLE virtab(
id NUMBER,
first_name VARCHAR2(10),
last_name VARCHAR2(10),
salary NUMBER(9,2),
comm1 NUMBER(3),
comm2 NUMBER(3),
salary1 AS (ROUND(salary*(1+comm1/100),2)),
salary2 NUMBER GENERATED ALWAYS AS (ROUND(salary*(1+comm2/100),2)) VIRTUAL,
CONSTRAINT employees_pk PRIMARY KEY (id)
);
选择
select * from DBA_TAB_COLUMNS where table_name = 'VIRTAB' and column_name = 'SALARY2'
输出:
SQL> select DATA_DEFAULT from DBA_TAB_COLUMNS where table_name = 'VIRTAB' and column_name = 'SALARY2';
DATA_DEFAULT
--------------------------------------------------------------------------------
ROUND("SALARY"*(1+"COMM2"/100),2)