jobs实现定时任务(定时调用存储过程)

[size=medium]存储过程定时执行Job如何写?说实话,对存储过程,我是一点都不了解,网上的资料看的是一头雾水,现在又要用这个来做东西
“每天晚上启动,读取符合条件的记录”,这个要怎么实现?
另外在这个存储过程里怎么调用函数

------解决方法--------------------------------------------------------
每天晚上启动的话,得用job吧。
------解决方法--------------------------------------------------------
begin
sys.dbms_job.submit(job => :job,
what => 'addtoWEB_PAYREF_POLICY;',
next_date => to_date('13-11-2009', 'dd-mm-yyyy'),
interval => 'trunc(sysdate)+1');
commit;
end;

------解决方法--------------------------------------------------------
Job是定时执行存储过程
上面例子中的addtoWEB_PAYREF_POLICY就是要执行的过程名
在过程中可以调用函数,怎么调用..你把函数当个值来处理就行了
------解决方法--------------------------------------------------------
java程序中,调用

存储过程:String proc = "{call proc_name(?,?) }";
几个参数几个问号('?')。
CallableStatement cstmt = conn.prepareCall(procedure); 之后设置参数
cstmt.setString(1,param1); 注意序号从1开始!
cstmt.setInt(2,param2);
cstmt.executeUpdate();
cstmt.close();

函数:String proc = "{ ? = call proc_name(?,?) }";
几个参数几个问号('?')。
CallableStatement cstmt = conn.prepareCall(procedure); 之后设置参数
cstmt.registerOutParameter(1,OracleTypes.INTEGER); 注意序号从1开始!
cstmt.setString(2,param1);
cstmt.setInt(3,param2);
cstmt.executeUpdate();
retVal = cstmt.getInt(1); //这里是获取返回值。
cstmt.close();

你这个需求,用job再好不过了,根本不用写代码,全部丢给数据库去做。
------解决方法--------------------------------------------------------
select * into order_time from t_busi_order_dtl
看你的where条件!这张表存在多个列,要用游标。
另外就是查询结果如果是多于一行数据,select into会出错的。

建议你用游标了。[/size]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值