Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从填充列值的位置进行检查_Sql_Oracle_Virtual Column - Fatal编程技术网

Sql 如何从填充列值的位置进行检查

Sql 如何从填充列值的位置进行检查,sql,oracle,virtual-column,Sql,Oracle,Virtual Column,我有表TEST\u ORD,其中有列ORD\u DAYID,它是虚拟列。我想知道这个列中的值是从哪里以及如何填充的。因为我不能在insert语句中使用此列,因为它是虚拟列 我尝试了以下查询,但它没有提供列中的值填充位置和方式的信息: Select * from all_source where upper(TEST) like '%TEST_ORD_ID%'; 用于生成虚拟列的表达式列在[DBA | ALL | USER]_选项卡(列视图)的DATA_DEFAULT列中 例如: 已创建包含虚拟

我有表TEST\u ORD,其中有列ORD\u DAYID,它是虚拟列。我想知道这个列中的值是从哪里以及如何填充的。因为我不能在insert语句中使用此列,因为它是虚拟列

我尝试了以下查询,但它没有提供列中的值填充位置和方式的信息:

Select * from all_source where upper(TEST) like '%TEST_ORD_ID%';

用于生成虚拟列的表达式列在[DBA | ALL | USER]_选项卡(列视图)的DATA_DEFAULT列中

例如:

已创建包含虚拟列的表,该虚拟列将根据定义填充

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)

请参考下面的链接:不,这不是我想要的。但是他们如何在这列中插入值呢?从哪个程序包?但你从来没有在你的问题中提到过这一点。你的问题是,我想知道这个列中的值是从哪里来的,是如何形成的。您在哪里提到过它是通过一个过程填充的,我还想告诉您虚拟列的目的是在满足条件时自动计算列的值。因此,过程或任何insert语句都无法填充此列。它将根据定义自动计算。看我的例子