写一个存储过程(每天执行一次)
答案:2 悬赏:0
解决时间 2021-03-14 14:12
- 提问者网友:傀儡离开
- 2021-03-13 16:52
从一条多重嵌套或者多条sql语句中查询出其中包含的表名放在一张表T(每次更新表,以前数据不要了)中,从T中获取表名插入到一条语句中执行(进行表分析)
最佳答案
- 二级知识专家网友:无字情书
- 2021-03-13 17:34
使用Oracle的job或者dbms_job,可以定时调度Oracle的存储过程
比如:
dbms_job.submit(test_job_really,'test_jobproce;',sysdate,'sysdate+1/1440');
比如:
dbms_job.submit(test_job_really,'test_jobproce;',sysdate,'sysdate+1/1440');
全部回答
- 1楼网友:情战凌云蔡小葵
- 2021-03-13 17:43
用job
oracle定时器调用存储过程
1.创建一个表,为了能清楚看到定时器的运行情况我们创建一个带有日期字段的表
sql代码
create table job_table(run_time date);
create table job_table(run_time date);
2.创建存储过程
sql代码
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
3.创建job,并且指定为一分钟执行一次
sql代码
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'trunc(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'trunc(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
4.创建之后自动处于运行状态,我们查询job表,看看我们创建的job
sql代码
select job,broken,what,interval,t.* from user_jobs t;
select job,broken,what,interval,t.* from user_jobs t;
job broken what interval ...
81 n job_proc; trunc(sysdate,'mi') + 1 / (24*60) ...
参数介绍
job job的唯一标识,自动生成的
broken 是否处于运行状态,n;运行;y:停止
what 存储过程名称
interval 定义的执行时间
补充:
描述 interval参数值
每天午夜12点 ''trunc(sysdate + 1)''
每天早上8点30分 ''trunc(sysdate + 1) + (8*60+30)/(24*60)''
每星期二中午12点 ''next_day(trunc(sysdate ), ''''tuesday'''' ) + 12/24''
每个月第一天的午夜12点 ''trunc(last_day(sysdate ) + 1)''
每个季度最后一天的晚上11点 ''trunc(add_months(sysdate + 2/24, 3 ), ''q'' ) -1/24''
每星期六和日早上6点10分 ''trunc(least(next_day(sysdate, ''''saturday"), next_day(sysdate, "sunday"))) + (6×60+10)/(24×60)''
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯