首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Oracle中检索用于创建视图的SQL?

如何在Oracle中检索用于创建视图的SQL?
EN

Stack Overflow用户
提问于 2014-04-25 19:45:22
回答 4查看 84.2K关注 0票数 23

在Oracle中,要检索用于创建函数、包等的SQL,可以查询user_source视图。但是,视图不包括在此视图中-它们也不存在于基础sys.source$中。要访问视图的文本,可以使用Oracle列,但这并不准确,因为user_views.text将重写查询的某些部分,例如,它将执行全局扩展。

如何检索用于创建视图的SQL,与输入的视图完全相同,而不进行全局扩展?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-25 21:31:09

我认为原文丢失了:

代码语言:javascript
复制
create table t1(id number)
/
create view t1_vw as select * from t1
/
alter table t1 add val varchar2(20)
/
alter view t1_vw compile
/
select * from t1_vw
/

将仅返回id列。这很有趣,但对于物化视图,原始文本将被保留。

票数 1
EN

Stack Overflow用户

发布于 2014-04-25 22:20:11

我使用dbms_metadata.get_ddl的方法如下:

代码语言:javascript
复制
select
dbms_metadata.get_ddl('VIEW', 'VIEW_NAME', 'VIEW_OWNER') 
from
dual;

参数如下:

代码语言:javascript
复制
DBMS_METADATA.GET_DDL (
object_type     IN VARCHAR2,
name            IN VARCHAR2,
schema          IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;

它有一个公共同义词。对于不属于用户的对象,用户可以获得系统权限SELECT_CATALOG_ROLE,并且可以看到所有对象的所有DDL。

在Oracle SQL Developer中,可以在查询结果窗口中看到clob (许多人还创建了实用程序来转换clob)。

大多数SQL IDE工具都有一些DDL查看机制,尽管DBMS_METADATA是Oracle数据库的种子功能(不需要一些花哨、昂贵的工具)。

票数 5
EN

Stack Overflow用户

发布于 2014-04-25 21:01:34

我认为作为开发人员,视图的兴趣在于使其有效和可运行的"select“,而编辑视图的最简单方法是使用另一个应用程序,如pl/sql developer或TOAD。

对于简单的任务,仅使用文本编辑器(如sqlplus.exe )来编辑oracle数据库中的任何对象都需要很长时间,而且这是一种令人头疼的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23292159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档