dbms_metadata.get_ddl的使用总结

  

日常工作中,经常有人通过工具去查看对象的定义,其实有时候这样去查看也很烦的。在工作中,也有同事问我怎么获取对象定义,今天我做个总结给大家,希望对大家有所帮助!

  

获取对象定义的包为:dbms_metadata,其中的get_ddl函数是获取对象的函数

  

GET_DDL函数返回创建对象的原数据的DDL语句,参数说明

  

1, object_type - - -需要返回原数据的DDL语句的对象类型
2的名字- - -对象名称
3,模式——对象所在的模式,默认为当前用户所在
所模式4版本——对象原数据的版本
5,模型- - - - - -原数据的类型默认为ORACLE
6,变换。——XSL-T变换。应用。返回:
7日对象的原数据默认以CLOB类型返回

  

其中,我们经常用到的是前三项。

  

dbms_metadata包中的get_ddl函数定义:

  

函数get_ddl (object_type VARCHAR2,
在VARCHAR2,
模式VARCHAR2默认为空,
版本VARCHAR2默认“兼容”,
模型VARCHAR2默认“甲骨文”,
变换。在VARCHAR2默认的DDL)返回CLOB;

  

注意:   

1,如果使用sqlplus需要进行下列格式化,特别需要对长期进行设置,否则无法显示完整的SQL
2,参数要使用大写,否则会查不到

  

设置线宽180
999
设置长90000页

  

1,查看数据库表的定义写法:

  

选择dbms_metadata.get_ddl(“表”,“表”,“用户名”)从双重;

  

2,查看索引的SQL

  

选择dbms_metadata.get_ddl(“指数”,“INDEXNAME”,“用户名”)从双重;

  

3,查看创建主键的SQL

  

选择DBMS_METADATA.GET_DDL(“约束”,“CONSTRAINTNAME”,“用户名”)从双重;

  

4,查看创建外键的SQL

  

选择DBMS_METADATA.GET_DDL (“REF_CONSTRAINT”、“REF_CONSTRAINTNAME”、“用户名”)从双重;

  

5,查看创建视图的SQL

  

选择DBMS_METADATA.GET_DDL(“视图”,“VIEWNAME”,“用户名”)从双重;

  

6,查看用户的SQL

  

选择DBMS_METADATA.GET_DDL(“用户”、“用户名”)从双重;

  

7日查看角色的SQL

  

选择DBMS_METADATA.GET_DDL(“角色”、“ROLENAME”)从双重;

  

8日查看表空间的SQL

  

选择DBMS_METADATA.GET_DDL(“表”、“TABLESPACENAME”)从双重;

  

9日获取物化视图SQL

  

选择dbms_metadata。get_ddl(“物化视图”、“MVNAME”)从双重;

  

10,获取远程连接定义SQL

  

选择dbms_metadata.get_ddl (“DB_LINK”、“DBLINKNAME”、“用户名”)从双支撑

  

11日获取用户下的触发器SQL

  

选择DBMS_METADATA.GET_DDL(“触发”,“TRIGGERNAME”,“用户名)双重;

  

12日获取用户下的序列

  

选择DBMS_METADATA.GET_DDL(“序列”,“SEQUENCENAME”)从双重;

  

13日获取用户下的函数

  

选择DBMS_METADATA.GET_DDL(“函数”,“FUNCTIONNAME”,“用户名”)从双重

  

14日获取包的定义

  

选择DBMS_METADATA.GET_DDL(“包”、“PACKAGENAME”、“用户名”)从双重

  

15日获取存储过程

  

选择DBMS_METADATA.GET_DDL(“过程”、“PROCEDURENAME”,“用户名”)从双重

  

16日获取包体定义

  

选择DBMS_METADATA。GET_DDL(“包主体”、“PACKAGEBODYNAME”,“用户名”)从双重

  

17日获取远程数据库对象的定义

  

选择DBMS_LOB.SUBSTR@dblinkname (DBMS_METADATA。GET_DDL@dblinkname(“表”,“表”、“用户名”))从DUAL@dblinkname

  

18岁获取多个对象的定义

  

选择DBMS_METADATA.GET_DDL (O。OBJECT_TYPE、O.object_name O.OWNER)
从DBA_OBJECTS O
O。OBJECT_TYPE(“表”、“指数”,“过程”,“功能”)和标记成=癘NWERNAME”;

  

这个语句可以更改一下,就可以得到很多语句出来

  

19日常见错误
完成选择dbms_metadata.get_ddl(“表”,“表”,“用户名”)从双重;
错误:
ora - 19206:为查询或REF游标参数无效值
ora - 06512:在“SYS.DBMS_XMLGEN",第83行
ora - 06512:在“SYS.DBMS_METADATA",第345行
ora - 06512:在“SYS.DBMS_METADATA",第410行
ora - 06512:在“SYS.DBMS_METADATA",第449行
ora - 06512:在“SYS.DBMS_METADATA",第615行
ora - 06512:在“SYS.DBMS_METADATA",第1221行
ora - 06512: 1
行没有行选择
解决办法:运行$ ORACLE_HOME/rdbms/admin/catmeta.sql

dbms_metadata.get_ddl的使用总结