如何获取表定义

时间:2018-01-25 03:59:10

标签: oracle oracle11g ddl

我需要获得表格的定义。

我可以使用哪个命令来获取此信息。我尝试使用create table A ( id NUMBER(9) not null, name VARCHAR2(1024) not null, description VARCHAR2(1024) ) tablespace DATA01 pctfree 10 initrans 1 maxtrans 255 storage ( initial 128K next 1M minextents 1 maxextents unlimited pctincrease 0 ); ,但它没有帮助。

假设之前使用此DDL创建了一个表:

doSNOW

如何重新创建此声明?

2 个答案:

答案 0 :(得分:2)

使用DBMS_METADATA.get_ddl

DBMS_METADATA.GET_DDL (
  object_type     IN VARCHAR2,
  name            IN VARCHAR2,
  schema          IN VARCHAR2 DEFAULT NULL,
  version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
  model           IN VARCHAR2 DEFAULT 'ORACLE',
  transform       IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;

e.g。

select DBMS_METADATA.GET_DDL('TABLE','A') from dual;

https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_metada.htm#ARPLS66885

答案 1 :(得分:0)

您可以使用USER_TAB_COLUMNS

SELECT *
FROM user_tab_columns
WHERE table_name = (SELECT name from A WHERE ...)
ORDER BY column_id

我认为A有一个表名列表,所以你想为上面的查询选择其中一个,但我不知道你想在{{1}中使用什么条件}子句,所以我离开了那部分。