ORACLE with..as...ステートメント
with...as ...文は、クエリ文を名前として定義し、後続のクエリブロックで参照できます.クエリ名が既存のテーブル名と重複する場合、with定義のクエリブロックは優先度が高い.with文は、カンマで区切られた複数のクエリーを定義できます.いくつかのテーブルを繰り返しクエリーする必要があるビューでよく使用されます.with文を使用して、クエリーが必要なテーブルをクエリーとして定義します.ビューで直接繰り返すクエリーテーブルよりも効率的です.個人的にはas..の役割は、繰り返し使用されるテーブルフィールドをクエリー・ブロックに事前にクエリーし、このクエリー・ブロックの名前を定義することです.これは一時テーブルに似ています.
例:
例:
create or replace view test_with_as
as
-- with..as..
with
dept_info as
(select dept_name,dept_id from dept),
employee_info as
(select employee_name, employee_id, dept_id, salary from employee)
-- with..as..
select d.*,t.* from dept_info d inner join employee_info e on d.dept_id=e.dept_id;