ORACLE with..as...ステートメント

670 ワード

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;