2015-06-24 30 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