达梦DM8之DBMS_METADATA获取对象创建语句

DBMS_METADATA包
        GET_DDL 函数用于获取数据库对表、视图、索引、全文索引、存储过程、函数、包、序列、同义词、约束、触发器等的 DDL 语句。
        MPP 环境下不支持使用 DBMS_METADATA 包。

1、DBMS_METADATA.GET_DDL方法介绍
获取指定对象元数据中的 DDL 语句。

1.1 语法如下:
FUNCTION GET_DDL(
    OBJECT_TYPE IN VARCHAR(30),
    NAME IN VARCHAR(128),
    SCHNAME IN VARCHAR(128) DEFAULT NULL
) RETURN CLOB

1.2 参数详解:
OBJECT_TYPE: 对象类型。包括表、视图、物化视图、索引、全文索引、存储过程、函数、包、目录等,详情请见 OPEN 参数详解。其中,OBJECT_TYPE 只能为大写。
NAME:  对象名称,区分大小写。
SCHEMA:  模式,默认是当前用户模式。

OBJECT_TYPE的类型包括:

 

1.3 返回值:
以 DDL 返回对象元数据中的 DDL 语句。
错误处理:
INVALID_ARGVAL:如果输入参数中存在空值或非法值。
OBJECT_NOT_FOUND:如果指定的对象在数据库中不存在

1.4 注意事项:
(1)如果使用disql需要进行下列格式化,特别需要对long进行设置,否则无法显示完整的SQL
(2)参数要使用大写,否则会查不到
set linesize 180
set pages 999
set long 1000


2.查看数据库对象SQL定义
2.1 表的SQL定义
[dmdba@dmdb04 ~]$ disql SYSDBA/SYSDBA@localhost:5236
服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 2.425(ms)
disql V8
SQL> set linesize 200 pages 2000
SQL> set long 1000

--查看 SYSDBA 用户下 DMETL_USER 表的定义语句
SQL> select dbms_metadata.get_ddl('TABLE', 'DMETL_USER', 'SYSDBA') from dual;

2.2 视图的SQL定义
--查看 DEM 用户下 DMA_GROUP_ITEM_VIEW 视图的定义语句
SQL> select dbms_metadata.get_ddl('VIEW', 'DMA_GROUP_ITEM_VIEW', 'DEM') from dual;

2.3 索引的SQL定义
--查看 DEM 用户下 INDEX33555462 索引的定义语句
SQL> select dbms_metadata.get_ddl('INDEX', 'INDEX33555462', 'DEM') from dual;

2.4 表空间的SQL定义
--查看 表空间 MAIN 的定义语句
SQL> select dbms_metadata.get_ddl('TABLESPACE', 'MAIN') from dual;

2.5 存储过程的SQL定义
--查看 DEM 用户下 FORBIDDEN_USER 存储过程的定义语句
SQL> select dbms_metadata.get_ddl('PROCEDURE', 'FORBIDDEN_USER', 'DEM') from dual;

2.6 函数的SQL定义
--查看 DEM 用户下 USER_LOGIN 函数的定义语句
SQL> select dbms_metadata.get_ddl('FUNCTION', 'USER_LOGIN', 'DEM') from dual;

2.7 触发器的SQL定义
--查看 DEM 用户下 REF_CON_TRIG134218781 触发器的定义语句
SQL> select dbms_metadata.get_ddl('TRIGGER', 'REF_CON_TRIG134218781', 'DEM') from dual;

2.8 同义词的SQL定义
--查看 SYSDBA 用户下 HISTOGRAMS_TABLE 同义词的定义语句
SQL> select dbms_metadata.get_ddl('SYNONYM', 'HISTOGRAMS_TABLE', 'SYSDBA') from dual;

2.9 序列的SQL定义
--查看 SYS 用户下 DBMS_LOCK_ID_SEQ 序列的定义语句
SQL> select dbms_metadata.get_ddl('SEQUENCE', 'DBMS_LOCK_ID_SEQ', 'SYS') from dual;

2.10 包的SQL定义
--查看 SYS 用户下 DBMS_AQ 包的定义语句
SQL> select dbms_metadata.get_ddl('PACKAGE', 'DBMS_AQ', 'SYS') from dual;

2.11 约束的SQL定义
--查看 DEM 用户下 CONS134218849 约束的定义语句
SQL> select dbms_metadata.get_ddl('CONSTRAINT', 'CONS134218849', 'DEM') from dual;

2.12 用户的SQL定义
--查看 WW 用户的定义语句
SQL> select dbms_metadata.get_ddl('USER', 'WW') from dual;

2.13 角色的SQL定义
--查看 SOI 角色的定义语句
SQL> select dbms_metadata.get_ddl('ROLE', 'SOI') from dual;

 

3. 通过DM管理工具也能获得对象的SQL定义语句

 达梦在线服务平台:https://eco.dameng.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值