日期:2014-05-16  浏览次数:20529 次

oracle 创建表并创建存储过程,通过存储过程将其他用户的信息导入到新建表中

---------------?? 创建新序列?? -------------------------
create sequence seq_封面标识
minvalue 1????????????????? --- 最小值
maxvalue 99999999999999???? ----? 最大值
start with 1??????????????? -- 从 1 开始
increment by 1????????????? -- 每次增加 1?
cache 20
order;

----------------??? 创建新表?? -------------------------
CREATE TABLE T_封面信息(
? 标识列 int,
? 单位编码 varchar(20) NULL,
? 单位Id varchar(30)NULL,?
? 单位名称 varchar(100) NULL,
? 单位级别 varchar(30) NULL,
? 总部代码 varchar(100) NULL,
? 企业单位名称 varchar(100) NULL,
? 填表人 varchar(20) NULL,
? 通讯地址 varchar(100) NULL,
? 邮政编码 varchar(10) NULL,
? 电话号码 varchar(20) NULL,
? 单位负责人 varchar(20) NULL,
? 财务机构负责人 varchar(20) NULL,
? 本企业代码 varchar(20) NULL,
? 上级企业代码 varchar(20) NULL,
? 组织形式 varchar(10) NULL,
? 企业类型 varchar(20) NULL,
? 级次 varchar(10) NULL,
? 报表类型 varchar(20) NULL,
? 经营规模 varchar(20) NULL,
? 所属行业 varchar(20) NULL,
? 日期 varchar(20) NULL,
? 年 varchar(10) NULL,
? 月 varchar(10) NULL,
? 合并个体 varchar(10) NULL,
? ALone_ID varchar(30) NULL,
? PRIMARY key(标识列)????????? -- 标识列作为主键(也可不定义主键)
) ;

--?? drop table T_封面信息
-- select * from T_封面信息


----------------??? 创建存储过程?? -------------------------
Create or replace Procedure P_封面信息
as?
?v_SQL1 varchar(2000);?????? -- 先定义全局变量
?v_delSql varchar(2000);
begin??????????????????????? -- 开始

-------------------------------------------- 删除原有表中的数据
v_delSql := 'delete from T_封面信息 where 日期 >= '|| ''''|| add_months(sysdate,-6) || '''';??? -- 拼接sql ,当期时间减去六个月
dbms_output.put_line(v_delSql);?????? --???? 打印出来
execute immediate v_delSql;?????????? --???? 执行
commit;?????????????????????????????? --???? 提交

-------------------------------------------- 向表中插入数据
v_SQL1 := 'INSERT INTO T_封面信息????????
select SEQ_封面标识.nextVal, F.unit_code 单位编码,F.UNIT_Id 单位ID,F.UNIT_Name 单位名称,F.Level_code 单位级别 ,
A.m10010 总部代码,C.m10000 单位名称,
A.m10005 填表人,A.m10011 通讯地址,A.m10003 邮政编码,A.m10007 电话号码,A.m10008 单位负责人,A.m10002? 财务机构负责人 ,
A.m10001 本企业代码,A.m10006 上级企业代码,B.m10003 组织形式,
case B.m10000 when''1'' then ''生产型'' when ''2'' then ''流通型'' when ''3'' then ''进出口型'' when ''4'' then ''服务型''
?when ''5'' then ''管理型'' when ''6'' then ''房地产开发''end 企业类型, B.m10001 级次,
case when B.m10004 = 0 then 1 when B.m10004 = 8 then 0 when B.m10004 = 9 then 2 end? 报表类型,
case when D.m10000 = 1 then ''大型'' when D.m10000 = 2 then ''中型'' when D.m10000 = 3 then ''小型'' end 经营规模,
case B.m10002 when ''1'' then ''服装'' when ''2'' then ''棉纺'' when ''3'' then ''毛纺'' when ''4'' then ''家用产业用纺织品''
?when ''5'' then ''商贸及服务'' when ''6'' then ''房地产''end 所属行业,???
E.inputDate 日期,subStr(E.Inputdate,1,4) 年,subStr(E.Inputdate,6,2)? 月,
E.Ver 合并个体,A.alone_id
from? IUFO1112.iufo_measure_data_jt6q5gan A
inner join IUFO1112.iufo_measure_data_o7qsn5es? B on A.Alone_Id = B.ALONE_ID
inner join IUFO1112.iufo_measure_data_p6338ya4 D on A.Alone_Id = D.ALONE_ID
inner join IUFO1112.iufo_measure_data_s3xqdt9j C on A.Alone_Id = C.ALONE_ID
inner join IUFO1112.IUFO_MEASURE_PUBDATA E on A.ALONE_ID=E.ALONE_ID
inner join IUFO1112.IUFO_UNIT_INFO F on E.KeyWord1=F.UNIT_ID
where dr = 0 and E.inputDate >='|| ''''|| add_months(sysdate,-6) || '''';
dbms_output.put_line(v_SQL1);
execute immediate v_SQL1;
commit;
end P_封面信息;????????????????? ---?? 结束存储过程