oracle使用dbms_metadata.get_ddl查看各种DDL(表,索引,存储过程)

可以查询的类型有6种 ,用如下语句:

-- 6种:SEQUENCE、TRIGGER、TABLE、INDEX、VIEW、FUNCTION
select object_type from user_objects group by object_type

比如查询SEQUENCE的ddl ,如下:

SELECT sequence_name,DBMS_METADATA.GET_DDL('SEQUENCE',sequence_name) 
FROM user_sequences;

解析:

SELECT sequence_name,DBMS_METADATA.GET_DDL('SEQUENCE',sequence_name) FROM user_sequences;

在这里插入图片描述
例子:

-- 查询SEQUENCE
SELECT sequence_name,DBMS_METADATA.GET_DDL('SEQUENCE',sequence_name) FROM user_sequences;
-- 查询TABLE
SELECT table_name,DBMS_METADATA.GET_DDL('TABLE',table_name) FROM user_tables;
-- 查询TRIGGER
SELECT trigger_name,DBMS_METADATA.GET_DDL('TRIGGER',trigger_name) FROM user_triggers;
-- 查询VIEW
SELECT view_name,DBMS_METADATA.GET_DDL('VIEW',view_name) FROM user_views;
-- 得到一个用户下的所有表,索引,存储过程,函数的ddl
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)FROM USER_OBJECTS uwhere U.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE','FUNCTION');
-- 查看当前用户表的SQL
select dbms_metadata.get_ddl('TABLE','EMPLOYEES') from dual;
-- 查看其他用表或索引的SQL
SELECT DBMS_METADATA.GET_DDL('TABLE','DEPT','SCOTT') FROM DUAL;
-- 查看所需表的索引
select INDEX_NAME, INDEX_TYPE, TABLE_NAME from user_indexes WHERE table_name='EMP';
--查看当前用户索引的SQL
select dbms_metadata.get_ddl('INDEX','PK_DEPT') from dual;
-- 查看其他用户索引的SQL 
select dbms_metadata.get_ddl('INDEX','PK_DEPT','SCOTT') from dual;
-- 查看所需表的约束
select owner, table_name, constraint_name, constraint_type from user_constraints where table_name='EMP';
-- 查看创建主键的SQL
SELECT DBMS_METADATA.GET_DDL('CONSTRAINT','EMP_PK') FROM DUAL;
-- 查看创建外键的SQL
SELECT DBMS_METADATA.GET_DDL('REF_CONSTRAINT','EMP_FK_DEPT') FROM DUAL;
-- 查看当前用户视图的SQL
SELECT dbms_metadata.get_ddl('VIEW', 'MY_TABLES') from dual ;
-- 查看其他用户视图的SQL
SELECT dbms_metadata.get_ddl('VIEW', 'MY_TABLES','SCOTT') FROM DUAL;
-- 查看创建视图的SQL也可以
select text from user_views where view_name=upper('&view_name');
--得到所有表空间的ddl语句
SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)FROM DBA_TABLESPACES TS;
--得到所有创建用户的ddl
SELECT DBMS_METADATA.GET_DDL('USER',U.username)FROM DBA_USERS U;
--去除storage等多余参数
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);

参考
oracle 如何查看创建表等数据库对象时的DDL语句
ORACLE导出DDL方法浅谈
[Oracle] dbms_metadata.get_ddl 的使用方法总结

原文地址:
https://www.jianshu.com/p/3aeb116afe44

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值