oracle 視圖的編譯

來源:互聯網
上載者:User

視圖依賴於基礎資料表的存在而存在,當基礎資料表進行了結構上的修改後,有可能會對視圖產生印象,如果要再次使用此試圖,需要進行編譯。

基礎資料表如下:

 

基礎資料表

1 create table employee2 (3 employ_id number primary key,4 first_name nvarchar2(10),5 last_name nvarchar2(10),6 province varchar2(10),7 city varchar2(10),8 salary number9 )

 

視圖

銷售人員的月薪

1 create or replace view v$employee$sales2 as3 select employ_id,family_name||first_name as employeename,salary+total_price*0.1 as salary4 from employee e join employee_sales  es on e.employ_id=es.sale_by

先查看視圖的狀態、可用性

SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE=UPPER('VIEW') AND OBJECT_NAME =UPPER('v$employee$sales')

結果如下

可以看到狀態為 VALID(可用的)

此時向表employee中添加一列Age

添加一列

1 alter table employee2 add age number

再次運行 SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE=UPPER('VIEW') AND OBJECT_NAME=UPPER('v$employee$sales')

結果如下

因為基礎資料表的結構發生了變化,所以此時的Status狀態變為INVALID(無效的)

在重新編譯之前,不能使用此視圖

編譯視圖

alter view v$employee$sales compile

重新查詢其狀態

再次編譯後,檢視狀態為可用。

其實只要對視圖執行一次查詢,就可以將試圖的狀態置位可用(oracle在執行真正的查詢前,會自動編譯視圖)

實際上,只有修改表的結構後才會影響視圖的有效性,而修改表的資料不會影響視圖的有效性。

但是,並非針對所有基礎資料表的修改後,通過編譯視圖都可以通過。比如修改基礎資料表的列名

alter table employee rename column first_name to firstname

查詢檢視狀態

SELECT OBJECT_NAME,STATUS FROM USER_OBJECTS WHERE OBJECT_TYPE=UPPER('VIEW') AND OBJECT_NAME =UPPER('v$employee$sales')

編譯視圖 v$employee$sales

因為我們已經把first_name 修改為firstname

只有我們針對視圖進行修改,才能順利通過

View Code

1 create or replace view v$employee$sales2 as3 select employ_id,family_name||firstname as employeename,salary+total_price*0.1 as salary4 from employee e join employee_sales  es on e.employ_id=es.sale_by
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.