[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
------解决方案--------------------