一个由表结构生成表的存储过程
-----创建表---- CREATE TABLE JGTB5001 ( ZDM VARCHAR2(30 BYTE), HZM VARCHAR2(100 BYTE), LX VARCHAR2(50 BYTE), JD VARCHAR2(20 BYTE), WBKLX VARCHAR2(100 BYTE) ) CREATE TABLE JGTB5002 ( ZDM VARCHAR2(30 BYTE), HZM VARCHAR2(100 BYTE), LX VARCHAR2(50 BYTE), JD VARCHAR2(20 BYTE), WBKLX VARCHAR2(100 BYTE) ) CREATE TABLE JGTB5003 ( ZDM VARCHAR2(30 BYTE), HZM VARCHAR2(100 BYTE), LX VARCHAR2(50 BYTE), JD VARCHAR2(20 BYTE), WBKLX VARCHAR2(100 BYTE) ) CREATE TABLE JGTB5004 ( ZDM VARCHAR2(30 BYTE), HZM VARCHAR2(100 BYTE), LX VARCHAR2(50 BYTE), JD VARCHAR2(20 BYTE), WBKLX VARCHAR2(100 BYTE) ) CREATE TABLE JGTB5005 ( ZDM VARCHAR2(30 BYTE), HZM VARCHAR2(100 BYTE), LX VARCHAR2(50 BYTE), JD VARCHAR2(20 BYTE), WBKLX VARCHAR2(100 BYTE) ) CREATE TABLE JGTB5006 ( ZDM VARCHAR2(30 BYTE), HZM VARCHAR2(100 BYTE), LX VARCHAR2(50 BYTE), JD VARCHAR2(20 BYTE), WBKLX VARCHAR2(100 BYTE) ) CREATE OR REPLACE PROCEDURE PROC_CREATE_TB authid current_user as -----声明变量 sqlstr varchar2(4000);--插入语句 begin declare --- 定义 --类型定义 begin select 'create'||' table '||' TB5001 (' ||wmsys.wm_concat(zdm||' '||decode( lx,'number','number('||decode(jd,'0','20','2,'||jd)||')','date','date','varchar2('||jd||')'))||')' INTO sqlstr from JGTB5001; execute immediate sqlstr; select 'create'||' table '||' TB5002 (' ||wmsys.wm_concat(zdm||' '||decode( lx,'number','number('||decode(jd,'0','20','2,'||jd)||')','date','date','varchar2('||jd||')'))||')' INTO sqlstr from JGTB5002; execute immediate sqlstr; select 'create'||' table '||' TB5003 (' ||wmsys.wm_concat(zdm||' '||decode( lx,'number','number('||decode(jd,'0','20','2,'||jd)||')','date','date','varchar2('||jd||')'))||')' INTO sqlstr from JGTB5003; execute immediate sqlstr; select 'create'||' table '||' TB5004 (' ||wmsys.wm_concat(zdm||' '||decode( lx,'number','number('||decode(jd,'0','20','2,'||jd)||')','date','date','varchar2('||jd||')'))||')' INTO sqlstr from JGTB5004; execute immediate sqlstr; select 'create'||' table '||' TB5005 (' ||wmsys.wm_concat(zdm||' '||decode( lx,'number','number('||decode(jd,'0','20','2,'||jd)||')','date','date','varchar2('||jd||')'))||')' INTO sqlstr from JGTB5005; execute immediate sqlstr; select 'create'||' table '||' TB5006 (' ||wmsys.wm_concat(zdm||' '||decode( lx,'number','number('||decode(jd,'0','20','2,'||jd)||')','date','date','varchar2('||jd||')'))||')' INTO sqlstr from JGTB5006; execute immediate sqlstr; end; commit; end PROC_CREATE_TB; / exec PROC_CREATE_TB;