3

オブジェクトを逆参照するときに、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.workdept.dnameこれは、に変更することで修正できますt.workdept.dname AS alias

私の質問は、なぜこれが強制されるのですか? workdept.dnameエイリアスなしの選択で発生するように、属性名を使用しないのはなぜですか。

SELECT t.eno, t.workdept.dname, t.salary FROM table t

(これはうまくいきます)

4

1 に答える 1

3

最初は常にエイリアスを使用します。

第二に、ビューに関連するオラクルの理由は次のとおりです。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_8004.htm

エイリアスを省略した場合、データベースはクエリ内の列または列のエイリアスからそれらを派生させます。このため、クエリに列名だけでなく式が含まれる場合は、エイリアスを使用する必要があります。また、ビュー定義に制約が含まれている場合は、エイリアスを指定する必要があります。

Oracle は、オブジェクト参照を表の列ではなく式として扱います。

于 2012-10-28T06:04:45.117 に答える