Sql 取消引用对象时,Oracle为什么要求视图中的列使用别名?
取消引用对象时,Oracle为什么要求视图中的列使用别名 例如:Sql 取消引用对象时,Oracle为什么要求视图中的列使用别名?,sql,oracle,Sql,Oracle,取消引用对象时,Oracle为什么要求视图中的列使用别名 例如: CREATE VIEW view AS SELECT t.eno, t.workdept.dname, t.salary FROM table t * ERROR at line 1: ORA-00998: must name this expression with a column alias (workdept是一个对象引用) 这可以通过将t.workde
CREATE VIEW view AS SELECT t.eno, t.workdept.dname, t.salary FROM table t
*
ERROR at line 1:
ORA-00998: must name this expression with a column alias
(workdept是一个对象引用)
这可以通过将t.workdept.dname
更改为t.workdept.dname作为别名来解决
我的问题是,为什么要强制执行?为什么不直接使用属性名workdept.dname
,就像在非关联选择中一样,例如:
从表t中选择t.eno、t.workdept.dname、t.salary
(这很好)首先始终使用别名
其次,以下是oracle关于视图的原因:
如果省略别名,则数据库将从查询中的列或列别名派生别名。因此,如果查询包含表达式而不是列名,则必须使用别名。此外,如果视图定义包含约束,则必须指定别名
Oracle将对象引用视为表达式而不是表列。“始终使用别名”?没有必要每次都对每一列使用别名。您可能希望在视图中调用与在表中调用相同的列。