当数据库含有几万张表,又需要快速获取到某个表的DDL时,如果通过管理工具一行行的找就太不方便了;而且作为一个熟练的技术人员,没有几个小诀窍提高工作效率怎么行?
方法一:调用DM系统存储过程 SP_TABLEDEF
定义:
功能说明: 获得表的定义
参数说明: schname:模式名 tablename:表名
这个存储过程,直接call调用或者写在匿名块中调用均可。
比如,查询DMHR模式下EMPLOYEE表定义:
这个只有DM7兼容,Oracle并没有这个存储过程。
但是它存在一个缺点,只能查询表,不能查询其他类型的对象。
方法二:DBMS_METADATA.GET_DDL
DBMS_METADATA系统包包含了许多实用的函数,有兴趣可以查看Oracle官方文档慢慢了解,这里就不一一赘述了,介绍一下GET_DDL
举例:
GET_DDL可以用于获取数据库对表、视图、索引、全文索引、存储过程、函数、包、序列、同义词、约束、触发器等的DDL语句。DM7中借鉴Oracle,做了很好的兼容,只需要知道对象类型、对象名称、对象用户就可以完成上述对象的DDL语句。