欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[Oracle] dbms_metadata.get_ddl 的使用方法总结

程序员文章站 2023-11-28 08:58:34
dbms_metadata.get_ddl()用于获取对象的ddl,其具体用法如下。注意:在sqlplus里,为了更好的展示ddl,需要设置如下参数:复制代码 代码如下:s...
dbms_metadata.get_ddl()用于获取对象的ddl,其具体用法如下。
注意:在sqlplus里,为了更好的展示ddl,需要设置如下参数:
复制代码 代码如下:

set line 200
set pagesize 0
set long 99999
set feedback off
set echo off

1)获得表、索引、视图、存储过程、函数的ddl
复制代码 代码如下:

select dbms_metadata.get_ddl('table','table_name','table_owner') from dual;
select dbms_metadata.get_ddl('index','index_name','index_owner') from dual;
select dbms_metadata.get_ddl('view','view_name','view_owner') from dual;
select dbms_metadata.get_ddl('procedure','procedure_name','procedure_owner') from dual;
select dbms_metadata.get_ddl('function','function_name','function_owner') from dual;

下面这个脚本用于获得某个schema下所有的表、索引、视图、存储过程、函数的ddl
复制代码 代码如下:

set pagesize 0
set long 90000
set feedback off
set echo off
spool schema_ddl.sql
select dbms_metadata.get_ddl('table',u.table_name,u.owner) from dba_tables u;
select dbms_metadata.get_ddl('view',u.view_name,u.owner) from dba_views u;
select dbms_metadata.get_ddl('index',u.index_name,u.owner) from dba_indexes u;
select dbms_metadata.get_ddl('procedure',u.object_name, u.owner,) from dba_objects u where u.object_type = 'procedure';
select dbms_metadata.get_ddl('function',u.object_name, u.owner,) from dba_objects u where u.object_type = 'function';
spool off;

2)获得表空间的ddl
获得单个表空间的ddl:
复制代码 代码如下:

select dbms_metadata.get_ddl('tablespace','tbs_name') from dual;

获得所有表空间的ddl:
复制代码 代码如下:

select dbms_metadata.get_ddl('tablespace', ts.tablespace_name)
from dba_tablespaces ts;

3)获得用户的ddl
获得单个用户的ddl:
复制代码 代码如下:

select dbms_metadata.get_ddl('user','epay_user') from dual;

获得所有用户的ddl:
复制代码 代码如下:

select dbms_metadata.get_ddl('user',u.username)
from dba_users u;