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_封面信息;                  ---   结束存储过程

 

---  在plsql 中执行 存储过程
begin 
  P_封面信息;
end;

 

--- 在 command 命令页面 执行存储过程
exec P_封面信息;
call P_封面信息
 
-- Select * from T_封面信息 
-- drop table T_封面信息

 

--- 得到当前时间,并计算出六个月前的时间
select add_months(sysdate,-6) from dual;
select sysdate from dual;


----------------------  定期执行存储过程  --------------- 
-- P_封面信息 的定期执行
Declare 
job1 number;
begin
dbms_job.submit(job1,'P_封面信息;',TRUNC(sysdate+1)+12/24,'TRUNC(sysdate+1)+2/24');
commit;
end;

 

 

 

将项目中的实例拿出来共享,以备后来的使用。语法容易忘记,这到是一个不错的记忆方法!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水寒

感谢打赏,您的支持是我最大的动

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值