您好,欢迎访问一九零五行业门户网

Oracle 11g新特性之--虚拟列(Virtual Column)

oracle11g新特性之--虚拟列(virtualcolumn)oracle11g虚拟列virtualcolumn介绍oracle11g在表中引入了虚拟列,虚拟列是一个表达式,在运行时计算,不存储在数据库
oracle 11g新特性之--虚拟列(virtual column)
14:51:28 scott@ test1 >create table emp314:51:51   2  (14:51:51   3    empno     number(6),14:51:51   4    sal       number(8,2),14:51:51   5    comm      number(8,2),14:51:51   6    sal_pack  generated always as ( sal + nvl(comm,0) ) virtual14:51:51   7  )table created.2、查看虚拟列属性
14:56:10 scott@ test1 >col table_name for a1014:56:19 scott@ test1 >col column_name for a2014:56:27 scott@ test1 >col data_type for a2014:56:34 scott@ test1 >col data_default for a2014:56:48 scott@ test1 >r  1  select table_name,column_name,data_type,data_default,virtual_column from user_tab_cols  2*  where table_name='emp3'table_name column_name          data_type            data_default         vir---------- -------------------- -------------------- -------------------- ---emp3       sal_pack             number               sal+nvl(comm,0)  yesemp3       comm                 number                                    noemp3       sal                  number                                    noemp3       empno                number                                    no     上述建的虚拟列 sal_pack 是由一个简单的表达式创建的,使用的关键字有 virtual(不过这个关键字是可选的),该字段的值是由 comm 这个字段通过表达式计算而来的。
在table上添加虚拟列:
15:44:12 scott@ test1 >alter table emp3 add (sal_total as (sal*12+comm) virtual);table altered.15:49:11 scott@ test1 >desc emp3; name                                                              null?    type ----------------------------------------------------------------- -------- -------------------------------------------- empno                                                                      number(6) sal                                                                        number(8,2) comm                                                                       number(8,2) sal_pack                                                          not null number sal_total                                                                  number 15:49:16 scott@ test1 >select * from emp3;     empno        sal       comm   sal_pack  sal_total---------- ---------- ---------- ---------- ----------        10       1500        500       2000      18500        20       3000        500       3500      36500        30       4000        500       4500      48500        40       6000        500       6500      72500        15:51:00 scott@ test1 >select table_name,column_name,data_type,data_default,virtual_column from user_tab_cols15:51:27   2  where table_name='emp3';table_name column_name          data_type            data_default         vir---------- -------------------- -------------------- -------------------- ---emp3       sal_total            number               sal*12+comm      yesemp3       sal_pack             number               sal+nvl(comm,0)  yesemp3       comm                 number                                    noemp3       sal                  number                                    noemp3       empno                number                                    no
其它类似信息

推荐信息