当前位置: 代码迷 >> Oracle开发 >> 跪求大神 解答 再写不出来就要被开除开
  详细解决方案

跪求大神 解答 再写不出来就要被开除开

热度:553   发布时间:2016-04-24 06:38:34.0
跪求大神 解答 再写不出来就要被开除了
[size=18px][size=12px]现有一张标准表  内容大致如下(简写)
ZD(字段名)     LX   ( 类型)           BM( 表名 )            YH(  用户 )
XXDM          varchar(200)          XXJBSJXX            icdc_xx
XXMC          varchar(200)          XXJBSJXX               icdc_xx
WYHBH           varchar(200)            WYHXX             icdc_aa
WYHMC          varchar(200)            WYHXX                   icdc_aa
WYHJC          varchar(200)                ZZMM                  icdc_bb
YWMC          varchar(200)                ZZMM                   icdc_bb

如何写一个存储过程  利用上表 的字段 自动建立新表       新表的表名 要求是 用户.表名 例如 icdc_xx.XXJBSJXX 新 表中的字段就是上表的字段名     跪求大神 调教阿 !!! 刚学oracle 两个月  写了一半后面实在 不会 了


------解决方案--------------------
declare
  cursor a is SELECT 'CREATE TABLE '
------解决方案--------------------
YH
------解决方案--------------------
'.'
------解决方案--------------------
BM
------解决方案--------------------
'('
------解决方案--------------------
TO_CHAR(WMSYS.WM_CONCAT(ZD
------解决方案--------------------
' '
------解决方案--------------------
LX))
------解决方案--------------------
')'FROM 设置表 group by YH,BM;
  str varchar2(4000);
begin
  open a;
  fetch a into str;
  while a %found loop
    EXECUTE IMMEDIATE STR;
    fetch a into str;
  end loop;
  close a;
end;

没测试,自己调试下吧
------解决方案--------------------

with t as 
(
select 'XXDM'    ZD,   'varchar(200)' LX,          'XXJBSJXX'  BM,          'icdc_xx'   YH  from dual union all
select 'XXMC'  ZD,    'varchar(200)' LX,          'XXJBSJXX'  BM,          'icdc_xx'   YH  from dual union all
select 'WYHBH'   ZD,   'varchar(200)' LX,           'WYHXX'  BM,          'icdc_aa'   YH  from dual union all
select 'WYHMC'  ZD,    'varchar(200)' LX,        'WYHXX'       BM,        'icdc_aa'     YH  from dual union all
select 'WYHJC'  ZD,    'varchar(200)' LX,          'ZZMM'      BM,          'icdc_bb'   YH  from dual union all
select 'YWMC'  ZD,    'varchar(200)' LX,        'ZZMM'      BM,         'icdc_bb'    YH  from dual 
)
select zdlx
       BM,
       YH,
       'create table '
------解决方案--------------------
YH
------解决方案--------------------
'.'
------解决方案--------------------
BM
------解决方案--------------------
' as ('
------解决方案--------------------
substr(sys_connect_by_path(t1.ZDlx, ','),2) 
------解决方案--------------------
')'
from
(
select ZD 
------解决方案--------------------
  相关解决方案