Oracle中获取对象的DDL语句,可以通过DBMS_METADATA.GET_DDL()查询到该对象的定义语句,具体SQL语句如下:
SELECT DBMS_METADATA.GET_DDL(OBJECT_TYPE, NAME, SCHEMA) FROM DUAL;
例子: 获取表的ddl语句,表名为EXAMPLE
SELECT DBMS_METADATA.GET_DDL('TABLE', 'EXAMPLE') FROM DUAL;
- 1
- 2
- 3
上述传入的参数含义如下:
· OBJECT_TYPE:对象的类型,如TABLE
、INDEX
、FUNTION
等;
· NAME: 对象名;
· SCHEMA:对象所在schema,默认为当前用户所在schema;
此外可选参数还有:
VERSION:对象原数据的版本
MODEL:原数据的类型默认为Oracle
TRANSFORM:XSL-T transform. to be applied.
该函数返回的是CLOB数据。
OBJECT_TYPE的类型如下:
类型名 | 类型中文名 | 说明 |
---|---|---|
AQ_QUEUE | 队列 | 依赖于表 |
AQ_QUEUE_TABLE | 队列表 | 依赖于表 |
AQ_TRANSFORM | ||
ASSOCIATION | ||
AUDIT | SQL语句审计 | |
AUDIT_OBJ | ||
CLUSTER | ||
COMMENT | 注释 | |
CONSTRAINT | 约束 | 不包括:索引组织表(IOT)的主键约束、列的非空约束、某些拥有REF列的表的REF SCOPE和WITH ROWID约束 |
CONTEXT | ||
DATABASE_EXPORT | ||
DB_LINK | 远程连接定义 | |
DEFAULT_ROLE | 默认角色 | 通过ALTER赋予用户 |
DIMENSION | 维 | |
DIRECTORY | 目录 | |
FGA_POLICY | 细粒度审计策略 | |
FUNCTION | 函数 | |
INDEX_STATISTICS | ||
INDEX | 索引 | |
INDEXTYPE | ||
JAVA_SOURCE | ||
JOB | 定时任务 | |
LIBRARY | 库 | |
MATERIALIZED_VIEW | 物化视图 | |
MATERIALIZED_VIEW_LOG | 物化视图日志 | |
OBJECT_GRANT | ||
OPERATOR | ||
PACKAGE | 包 | |
PACKAGE_SPEC | ||
PACKAGE_BODY | 包体 | |
PROCEDURE | 存储过程 | |
PROFILE | 配置文件 | |
PROXY | 代理认证 | 通过ALTER赋予用户 |
REF_CONSTRAINT | 外键约束 | |
REFRESH_GROUP | ||
RESOURCE_COST | ||
RLS_CONTEXT | ||
RLS_GROUP | ||
RLS_POLICY | ||
RMGR_CONSUMER_GROUP | ||
RMGR_INTITIAL_CONSUMER_GROUP | ||
RMGR_PLAN | ||
RMGR_PLAN_DIRECTIVE | ||
ROLE | 角色 | |
ROLE_GRANT | ||
ROLLBACK_SEGMENT | ||
SCHEMA_EXPORT | ||
SEQUENCE | 序列 | |
SYNONYM | 同义词 | |
SYSTEM_GRANT | 系统授权 | |
TABLE | 表 | |
TABLE_DATA | ||
TABLE_EXPORT | ||
TABLE_STATISTICS | ||
TABLESPACE | 表空间 | |
TABLESPACE_QUOTA | ||
TRANSPORTABLE_EXPORT | ||
TRIGGER | 触发器 | |
TRUSTED_DB_LINK | ||
TYPE | 类型 | |
TYPE_SPEC | ||
TYPE_BODY | ||
USER | 用户 | |
VIEW | 视图 | |
XMLSCHEMA | ||
XS_USER | ||
XS_ROLE | ||
XS_ROLESET | ||
XS_ROLE_GRANT | ||
XS_SECURITY_CLASS | ||
XS_DATA_SECURITY | ||
XS_ACL | ||
XS_ACL_PARAM | ||
XS_NAMESPACE |