oracle存储过程开发实际工作,Oracle 存储过程+JOB初学

项目模块:调查问券

要求:每个问卷有开始时间和结束时间,有未开始(status=1)-->调研中(2)-->结束调研(3)3个状态。要求系统自动判断是否到达了问卷的开始时间,如果当前时间>=开始时间且结束时间,则将调研中的问卷状态置为已结束。

1)SQL拼写

开始调研SQL:

update E_QUESTIONNAIRE_THEME t

set t.status = 2

where t.state =1 //state为1代表可用,系统使用假删除,2代表已删除

and sysdate>=to_date(t.begin_date,'yyyy-mm-dd')

and sysdate

结束SQL:

update E_QUESTIONNAIRE_THEME t

set t.status = 3

where t.state =1

and sysdate>=to_date(t.end_date,'yyyy-mm-dd') and t.status = 2;

2)存储过程

create or replace procedure E_CHANGE_THEME_STATUS_PROC is

begin

update E_QUESTIONNAIRE_THEME t

set t.status = 2

where t.state =1

and sysdate>=to_date(t.begin_date,'yyyy-mm-dd')

and sysdate

update E_QUESTIONNAIRE_THEME t

set t.status = 3

where t.state =1

and sysdate>=to_date(t.end_date,'yyyy-mm-dd') and t.status = 2;

end E_CHANGE_THEME_STATUS_PROC;

3)Job

---windows窗体下脚本(这个我没有测试过)

begin

sys.dbms_job.submit(job => :job,

what => 'E_CHANGE_THEME_STATUS_PROC();',

next_date => to_date('28-12-2011 00:06:00', 'dd-mm-yyyy hh24:mi:ss'),

interval => 'trunc(sysdate)+1+0.1/24');

commit;

end;

/

---PL/SQL中

declare

job number;

begin

sys.dbms_job.submit(job,'E_CHANGE_THEME_STATUS_PROC();',sysdate,'sysdate+3/1440');

end;---测试使用的语句,经测试该语句没有问题

declare

job number;

begin

sys.dbms_job.submit(job,'E_CHANGE_THEME_STATUS_PROC();',to_date('27-12-2011 00:06:00', 'dd-mm-yyyy hh24:mi:ss'),'trunc(sysdate)+1+0.1/24');

end; --正式任务的语句

===============================

刚拿到任务连什么是JOB都不知道,存储过程更是觉得是高深莫测的东东,后来查文档和开源代码完成了简易的功能,有什么错误的地方欢迎各位大侠指正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值