利用文档中表说明文档动态建表

1.首先建一个表,用来存储文档中某个表的说明信息

-- Create table
create table T_S_TABLE_CFG
(
  bh   VARCHAR2(32),
  sjxm VARCHAR2(32),
  zwjj VARCHAR2(256),
  lx   VARCHAR2(4),
  cd   VARCHAR2(64),
  ys   VARCHAR2(4),
  zkj  VARCHAR2(1024),
  jsjl VARCHAR2(1024),
  yy   VARCHAR2(256)
)
tablespace EDM
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    next 1
    minextents 1
    maxextents unlimited
  );
-- Add comments to the table 
comment on table T_S_TABLE_CFG
  is '配置表信息';
-- Add comments to the columns 
comment on column T_S_TABLE_CFG.bh
  is '编号';
comment on column T_S_TABLE_CFG.sjxm
  is '数据项名';
comment on column T_S_TABLE_CFG.zwjj
  is '中文简介';
comment on column T_S_TABLE_CFG.lx
  is '类型';
comment on column T_S_TABLE_CFG.cd
  is '长度';
comment on column T_S_TABLE_CFG.ys
  is '约束';
comment on column T_S_TABLE_CFG.zkj
  is '值空间';
comment on column T_S_TABLE_CFG.jsjl
  is '解释举例';
comment on column T_S_TABLE_CFG.yy
  is '引用编号'

 

2.用下面的sql语句查询建表语句

select 'create table T_RY_HCFXX( '
||
   listagg(zd.zdcd,',') WITHIN GROUP (ORDER BY zd.cn) 
|| ' )
  tablespace EDM
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  ); '
||' comment on table T_RY_HCFXX is '||''''||'获奖励信息数据子类表'||''''||' ;'
|| listagg(zdsm.zdsm,',') WITHIN GROUP (ORDER BY zdsm.cn2)   jbyj
from 
     ( select rownum cn , t.sjxm||'  ' 
                    || case when t.lx='C' then 'VARCHAR2'||'('||decode(t.cd,null,6,t.cd)||') '  
                            when t.lx='N' then 'NUMBER'||'('||decode(t.cd,null,6,t.cd)||') ' 
                            when t.lx='B' then 'BLOB'||' ' else null end 
                    || case when t.ys='M' then 'not null ' else null end  zdcd                  
                         from T_S_TABLE_CFG t
      )zd,
      ( select rownum cn2 ,'comment on column' ||'T_RY_HCFXX.'||t.sjxm||'  is '||''''||t.zwjj||''''||';'
                    zdsm                 
                         from T_S_TABLE_CFG t
      )zdsm
 where zd.cn=zdsm.cn2

你可能感兴趣的:(Oracle)