什么是SQLPlus命令来查看VIEW语句?

Mow*_*gli 4 sql oracle

我刚刚发现我正在运行的一个查询不是来自实际的表,而是来自一个VIEW.

我想在那个VIEW中看到SQL查询.如果我试着describe让一个对象不存在错误.当我从视图中选择时,我得到了一些数据.

Wol*_*olf 5

要查看视图下的SQL,您需要查询数据字典.尝试

select view_name, text from user_views where view_name = 'MY_VIEW';
Run Code Online (Sandbox Code Playgroud)

如果您的用户不拥有该视图,请尝试all_views;


Ben*_*Ben 3

如果您想查看用于创建视图的实际 SQL,您可以使用函数dbms_metadata.get_ddl,它返回一个 clob:

select dbms_metadata.get_ddl ( 'VIEW'
                             , 'MY_VIEW' -- view name
                                )
  from dual
Run Code Online (Sandbox Code Playgroud)

如果您需要的话,还有更多选择。

如果你想像往常一样描述它。如果这不起作用,则说明您处于错误的架构中或者该对象不存在:

DESC MY_VIEW
Run Code Online (Sandbox Code Playgroud)

如果您的架构不正确,您可以使用:

select dbms_metadata.get_ddl ( 'VIEW'
                             , 'MY_VIEW', -- view name
                             , 'MY_SCHEMA'
                                )
  from dual
Run Code Online (Sandbox Code Playgroud)

或者

DESC MY_SCHEMA.MY_VIEW
Run Code Online (Sandbox Code Playgroud)