Oracle列别名的声明位置/方式



我正在尝试跟踪表中的一些信息/主键,我们用来跟踪这些信息/主键的正常机制是通过视图,这些视图只不过是具有极其神秘列名的表顶部的语义层。

例如,该表看起来像:

create table F3002_WH
(
  ixtbm  CHAR(9) not null,
  ixkit  NUMBER not null,
  ixmmcu CHAR(36) not null,
  ixcpnt NUMBER not null,
  ixsbnt NUMBER not null,
  ixbqty NUMBER not null,
  ixcoby CHAR(3) not null
);

但是视图会将这些字段中的每个字段转换为可读的名称,例如"TYPE_BILL"而不是"ixtbm"

然而,当我查看视图的DDL时:

CREATE OR REPLACE VIEW F3002_VIEW AS
SELECT
  ixtbm, ixkit, ixmmcu, ixcpnt, ixsbnt, ixbqty, ixcoby
from F3002_WH;

我没有看到别名。我本希望看到ixtbm as type_bill

所以我的问题是这个别名从哪里来,我如何在不把它变成一个科学项目的情况下把它和原来的域名联系起来?我不明白在不在视图代码中的情况下查询视图时如何呈现它。

值得一提的是,我正在使用All Around Automation的PL/SQL Developer。我强烈怀疑这不是罪魁祸首,但为了充分披露,我想提到它。

CREATE VIEW myView (alias1, alias2) as select ixtbm, ixkit from f3002_wh;

不过,我不得不说,如果你能看到底层视图查询,那么混淆就是浪费时间!

我认为发生的情况是,您的工具生成的DDL默认情况下不包括列列表,这就是您看不到它的原因。如果您删除视图,并使用他们生成的DDL重建它,而不是使用最初创建它的脚本,则会丢失别名。

它们可能是DDL生成器上的选项,用于在视图中包括列名列表,但由于我没有该工具,我无法验证这一点。为此,他们需要查询ALL_TAB_COLUMNS,而不仅仅是在ALL_VIEWS的TEXT字段中显示查询。

最新更新