ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 批量获取表定义的方法

批量获取表定义的方法

原创 Linux操作系统 作者:安佰胜 时间:2010-10-20 10:43:44 0 删除 编辑

SQL> conn an/an
已连接。
SQL> create table ddl_scripts(
  2  object_name varchar2(50),
  3  object_type varchar2(30),
  4  text varchar2(4000));

表已创建。

SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
DDL_SCRIPTS
AN

SQL> declare
  2  a1 varchar2(32767);
  3  str varchar2(32767);
  4  n1 number;
  5  BEGIN
  6  for c1 IN(select table_name from user_tables order by 1) LOOP
  7          select DBMS_LOB.SUBSTR(dbms_metadata.get_ddl('TABLE', c1.table_name), 32767,1) INTO a1 from dual;
  8          insert into ddl_scripts values(c1.table_name, 'TABLE', a1);
  9  END LOOP;
 10  END;
 11  /

PL/SQL 过程已成功完成。

SQL> SELECT TEXT FROM DDL_SCRIPTS;

TEXT
--------------------------------------------------------------------------------

  CREATE TABLE "AN"."AN"
   (    "ID" NUMBER(*,0),
        "NAME" VARCHAR2(2)
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"


TEXT
--------------------------------------------------------------------------------


  CREATE TABLE "AN"."DDL_SCRIPTS"
   (    "OBJECT_NAME" VARCHAR2(50),
        "OBJECT_TYPE" VARCHAR2(30),
        "TEXT" VARCHAR2(4000)
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)

TEXT
--------------------------------------------------------------------------------
  TABLESPACE "USERS"

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

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

注册时间:2009-08-26

  • 博文量
    215
  • 访问量
    660358