有一张contract表,里面有一个字段是contractdate字段
问题:
我想每个月的一日自动运行SQL语句,并且这条语句只取上个月1日到本月1日之间的所有的合同
这样的SQL怎么写?
是否需要配合job一起?
问题:
我想每个月的一日自动运行SQL语句,并且这条语句只取上个月1日到本月1日之间的所有的合同
这样的SQL怎么写?
是否需要配合job一起?
调试欢乐多
然后用个JOB来实现
麻烦给各详细的写法,谢谢。
BEGIN
SYS.DBMS_JOB.REMOVE(181);
COMMIT;
END;
/DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'CHINA.SP_MAKE_AB071
(''SYSTEM'' /* VARCHAR2 */ );'
,next_date => to_date('01/12/2008 02:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'TRUNC(LAST_DAY(SYSDATE)) + 1+1/12'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/其中 interval => 'TRUNC(LAST_DAY(SYSDATE)) + 1+1/12'就是每个月的1号的一点
其实也可以这样
trunc(add_months(sysdate,1),'mm')
这个也是到每个月的1号0点
begin
sys.dbms_job.submit(:JOBNO,
'insert ino table_name(zs)
select count(*) from contract
where contractdate >= add_months(trunc(sysdate,''mm''),-1) ;',
sysdate,
'add_months(trunc(sysdate,''mm''),1)');
commit;
end;
/
我说清楚一点
我有一个存储过程名字叫ctmc_updateprice_proc
我现在要写一个job,名字无所谓
目的就是每个月的1日凌晨运行存储过程。
哪位大哥麻烦把写法发出来谢谢!
begin
sys.dbms_job.submit(:JOBNO,
'insert into table_name(zs) -- 你的表名字段.
select count(*) from contract
where contractdate >= add_months(trunc(sysdate,''mm''),-1) ;commit;',
sysdate,
'add_months(trunc(sysdate,''mm''),1)');
commit;
end;
/
sys.dbms_job.submit(job => :job,
what => 'ctmc_updateprice_proc;',
next_date => to_date('2008-12-1 00:00:00',
'yyyy-mm-dd hh24:mi:ss'),
interval => 'trunc(add_months(sysdate,1) ,' mm ')');
commit;
end;
/
job number;
begin
sys.dbms_job.submit(job => job,
what => 'ctmc_updateprice_proc;',
next_date => to_date('2008-12-1 00:00:00',
'yyyy-mm-dd hh24:mi:ss'),
interval => 'trunc(add_months(sysdate,1) ,' mm ')');
commit;
end;
/这样就可以执行了
呵呵
ora-06550:第八行,第六十七列;
pls-00103:出现符号“MM”在需要下列之一时。。
咋回事?
job number;
begin
sys.dbms_job.submit(job => job,
what => 'ctmc_updateprice_proc;',
next_date => to_date('2008-12-1 00:00:00',
'yyyy-mm-dd hh24:mi:ss'),
interval => 'trunc(add_months(sysdate,1) ,''mm'')');
commit;
end;
/