Oracle 1Z0-047 sql专家考试的主题之一是“使用可见/不可见列创建简单和复杂的视图”。我可以使用不可见的列创建表,我可以创建一个包含这些不可见列的视图,但是我找不到使这些列在结果视图中不可见的语法。 Oracle文档在数据库SQL语言参考"Create View"
页面中提到了可见/不可见,但未给出具体示例,我尝试跟踪其波浪形图失败:
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 :(得分:3)
这很有效。指定"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 :(得分:1)
“为什么除了通过考试之外我还想做这个?”
如Oracle SQL Reference CREATE TABLE
中所述,您可以使用INVISIBLE
子句向任何表添加列,而不会将包含通配符SELECT *
语句的代码随意添加到其中。
因此,对于您希望 legacy 代码随意操作的表添加列非常有用。
有关更全面的解释和示例,请参阅Oracle杂志 MAY / JUNE 2014 版本中的文章ASK TOM: technology。