首页 文章

oracle 12c视图中的隐形列

提问于
浏览
1

Oracle 1Z0-047 sql专家考试的主题之一是"Create simple and complex views with visible/invisible columns" . 我可以创建包含不可见列的表,我可以创建一个包含这些不可见列的视图,但是我找不到使这些列在结果视图中不可见的语法 . 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

任何想法如何使一个视图的列不可见,为什么我想这样做而不是通过考试?

2 回答

  • 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;
    
  • 2

    “为什么除了通过考试之外我还想做这个?”

    您可以使用 INVISIBLE 子句(如Oracle SQL Reference CREATE TABLE中所述)将列添加到任何表,而不会将包含通配符 SELECT * 语句的代码随意添加到其中 .

    因此,对于不希望遗留代码随意操作的表添加列非常有用 .

    有关更全面的解释和示例,请参阅Oracle Magazine杂志 MAY/JUNE 2014 中的文章ASK TOM: technology .

相关问题