实现功能:如果本月没有添加记录,自动把上个月的纪录插入进去。

公司用Oracle,····自己这块太差·····,特别是pl/sql,以后要好好学习pl/sql了。

要实现的一个小功能是如果本月没有添加记录,自动把上个月的纪录插入进去。

 

第一步:先创建存储过程:

 

create or replace procedure JOB_REP_TARGET as


cursor allTarget
IS
select * from rep_b_target  --这里可以仿照job_card_today写一个function去获取数据源
where DEL_FLAG = 0 and begin_time = TRUNC(LAST_DAY(SYSDATE))+1    ;       --获取所有的没有设置目标的数据源


BEGIN
for target in allTarget
LOOP
INSERT INTO rep_b_target
(
B_TARGET_ID,
B_TARGET_E_USER_ID,
B_TARGET_TYPE,
B_TARGET_DEPART_ID,
B_TARGET_GROUP_ID,
BEGIN_TIME,
END_TIME,
B_TARGET_VALUE,
DATA_STATE,
DATA_SORT,
CREATE_TIME,
CREATE_USER_ID,
DEL_FLAG,
B_TARGET_TEAM_ID
)
VALUES
(
SEQ_REP_B_TARGET.NEXTVAL,
target.B_TARGET_E_USER_ID,
target.B_TARGET_TYPE,
target.B_TARGET_DEPART_ID,
target.B_TARGET_GROUP_ID,
target.BEGIN_TIME,
target.END_TIME,
target.B_TARGET_VALUE,
target.DATA_STATE,
target.DATA_SORT,
target.CREATE_TIME,
target.CREATE_USER_ID,
target.DEL_FLAG,
target.B_TARGET_TEAM_ID
);
END LOOP;

END ;

 

第二步:创建job

 

主要有三个参数

what  :JOB_REP_TARGET; (同志们啊,这个分号一定要加上,因为这个找了很久)

next date:2010-10-1 12:00:00

interval:TRUNC(LAST_DAY(SYSDATE))+1  (这个是每个月的第一天执行)

 

 

已完毕!

 

 

 

可以改进的地方:灰色部分

看见同事这个地方采用的是一个function,这个function也找了好久。

cursor allTarget
IS

SELECT * FROM TABLE(IMPORT_CARD_DATA(SYSDATE));

 

现在将同事的那个function贴出来看看

create or replace function IMPORT_CARD_DATA(CARD_DATE DATE)
  return TT_HR_CARD_TODAY_TABLE 
  pipelined is
  E_USER_ID pls_integer;
  CARD_TIME DATE;
begin

  return;
end IMPORT_CARD_DATA;

涉及到的

管道化数据函数

http://log-cd.javaeye.com/blog/411123

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值