“
当数据库含有几万张表,又需要快速获取到某个表的DDL时,如果通过管理工具一行行的找就太不方便了;而且作为一个熟练的技术人员,没有几个小诀窍提高工作效率怎么行?以下介绍两个能够快速轻松地完成本次任务的“小方法”,一起来看看吧。
今天的测试环境
操作系统:中标麒麟 6 64位
数据库:达梦数据库v8.1
方法1调用DM存储系统过程 SP_TABLEDEF
存储过程的定义
功能说明:获得表的定义
参数说明:
schname:模式名
tablename:表名
这个存储过程,直接call调用或者写在匿名块中调用均可。
比如,查询DMHR模式下EMPLOYEE表定义:
Call sp_tabledef(‘DMHR’,’EMPLOYEE’);
BEIGN
Sp_tabledef(‘DMHR’,’EMPLOYEE’);
END;
这个存储过程是DM数据库独有的,Oracle并没有这个存储过程。但是它存在一个缺点,只能查询表,不能查询其他类型的对象。
所以这里推荐的第二种方法,也是笔者最常用的查询表定义的方法。
方法2DBMS_METADATA.GET_DDL
DBMS_METADATA系统包包含了许多实用的函数,有兴趣可以查看DM官方文档慢慢了解,这里就不一一赘述了,介绍一下GET_DDL
我们再测试一下这个包:
GET_DDL最先是在Oracle中使用,因为其功能非常强大,可以用于获取数据库对表、视图、索引、全文索引、存储过程、函数、包、序列、同义词、约束、触发器等的DDL语句。于是DM数据库中借鉴Oracle,做了很好的兼容,只需要知道对象类型、对象名称、对象用户就可以完成上述对象的DDL语句。
若碰到需要查询某对象DDL语句的场景,不妨试试看!
领取专属 10元无门槛券
私享最新 技术干货