ITPub博客

首页 > 数据库 > Oracle > 获取建表DDL语句

获取建表DDL语句

Oracle 作者:royevictory 时间:2015-12-13 23:27:29 0 删除 编辑
    平时经常通过PL/SQL Developer的View SQL选项查看建表语句,非常便捷;那么,如果没有图形化工具,我们如何获取指定表的建表DDL语句呢?也很简单,只需要一个查询语句,就可以获取对象的详细的DDL描述。

创建测试表

   首先我们在hoegh用户下创建测试表H。

点击(此处)折叠或打开

  1. SQL>
  2. SQL> show user
  3. USER"HOEGH"
  4. SQL>
  5. SQL> create table H(id number primary key,name varchar2(20));

  6. 表已创建。

  7. SQL>

使用DBMS_METADATA.GET_DDL

    我们使用DBMS_METADATA.GET_DDL来获取表的DDL语句。

点击(此处)折叠或打开

  1. SQL>
  2. SQL> SET LONG 2000000
  3. SQL> SET PAGESIZE 0
  4. SQL> select dbms_metadata.get_ddl('TABLE','H','HOEGH') from dual;

  5.   CREATE TABLE "HOEGH"."H"
  6.    ( "ID" NUMBER,
  7.         "NAME" VARCHAR2(20),
  8.          PRIMARY KEY ("ID")
  9.   USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
  10.   STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  11.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  12.   TABLESPACE "USERS" ENABLE
  13.    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  14.   STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  15.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  16.   TABLESPACE "USERS"


  17. 已选择 1 行。

  18. SQL>

使用DBMS_METADATA.OPEN

    也许,大多时候我们只希望获取表结构而对表的物理存储结构不感兴趣,那么可以通过使用DBMS_METADATA.OPEN来实现,具体实现过程如下:

点击(此处)折叠或打开

  1. SQL>
  2. SQL> DECLARE
  3.   2 V_STR CLOB;
  4.   3 V_HANDLE NUMBER;
  5.   4 V_TRANS_HANDLE NUMBER;
  6.   5 BEGIN
  7.   6 V_HANDLE := DBMS_METADATA.OPEN('TABLE');
  8.   7 DBMS_METADATA.SET_FILTER(V_HANDLE, 'NAME', 'H', 'TABLE');
  9.   8 V_TRANS_HANDLE := DBMS_METADATA.ADD_TRANSFORM(V_HANDLE, 'DDL');
  10.   9 DBMS_METADATA.SET_TRANSFORM_PARAM(V_TRANS_HANDLE, 'SEGMENT_ATTRIBUTES', FALSE);
  11.  10 V_STR := DBMS_METADATA.FETCH_CLOB(V_HANDLE);
  12.  11 FOR I IN 1..CEIL(DBMS_LOB.GETLENGTH(V_STR)/200) LOOP
  13.  12 DBMS_OUTPUT.PUT_LINE(DBMS_LOB.SUBSTR(V_STR, 200, (I-1)*200 + 1));
  14.  13 END LOOP;
  15.  14 END;
  16.  15 /

  17.   CREATE TABLE "HOEGH"."H"
  18.    ( "ID" NUMBER,
  19.         "NAME" VARCHAR2(20),
  20.          PRIMARY KEY ("ID") ENABLE
  21.    )



  22. PL/SQL 过程已成功完成。

  23. SQL>
    需要注意的是,执行上述存储过程后可能没有输出结果,此时需要打开oracle自带的输出方法dbms_output;具体的,在执行set serveroutput on以后,使用dbms_output方法就可以输出信息了。

hoegh
15.11.16
-- The End --

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29302187/viewspace-1871608/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-08-06

  • 博文量
    195
  • 访问量
    527770