2015-06-24 33 views
1

Oracle 1Z0-047 sql專家考試的主題之一是「使用可見/不可見列創建簡單和複雜的視圖」。我可以創建帶有不可見列的表格,我可以創建一個包含那些不可見列的視圖,但是我找不到在結果視圖中使這些列不可見的語法。 Oracle文檔提到有形/無形的數據庫SQL語言參考"Create View"頁,但沒有給出具體的例子,我在下面的波浪圖失敗的嘗試:oracle 12c中的無形列查看

create or replace view jl_book_author as 
    select title, b.isbn isbn invisible, lname, fname 
     from jl_books b 
      join jl_bookauthor a on b.isbn = a.isbn 
      join jl_author r on a.authorid = r.authorid 
     order by title, lname, fname; 
ERROR at line 3: 
ORA-00923: FROM keyword not found where expected 

任何想法如何做到使視圖的列無形的,以及爲什麼除了通過考試之外,我還想這樣做嗎?

+0

感謝您的編輯,Valorax,看起來好多了!你能解釋你是如何做到的嗎?正如說明所述,我在原文中放置了4個縮進,但最終的輸出沒有縮進。我錯過了什麼? – iheitsch

回答

1

這有效。指定"INVISIBLE"的唯一方法是如果您在視圖中使用列別名。別名,約束和INVISIBLE/VISIBLE修飾符需要位於視圖名稱和關鍵字「AS」之間的括號內。

create or replace view jl_book_author (tl, bn INVISIBLE, al, af) as 
    select title, b.isbn, lname, fname 
     from jl_books b 
      join jl_bookauthor a on b.isbn = a.isbn 
      join jl_author r on a.authorid = r.authorid 
     order by title, lname, fname; 
1

「爲什麼我會想這樣做除了通過考試?」

您使用INVISIBLE條款,如在Oracle SQL參考CREATE TABLE表示,將列添加到任何表,而無需代碼包含通配符SELECT *語句添加到它隨意。

因此,非常有用的添加列表,你不想傳統代碼隨便操縱。

有關更全面的解釋和示例,請參閱Oracle Magazine雜誌的MAY/JUNE 2014版本中的文章ASK TOM: technology