我想在每个月初向数据库插入一些记录,可以用触发器吗?如果不能,有什么好的方法吗?

zhangyong4444 2006-09-28 03:11:03
我想在每个月初向数据库插入一些记录,可以用触发器吗?如果不能,有什么好的方法吗?
...全文
496 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wkz_5214 2006-11-04
  • 打赏
  • 举报
回复
如果系统是unix或linux的话,可以用crontab命令建立一个用户配置文件:
配置内容:0 0 26 * * /opt/j2sdk1.4.2_06/bin/java -jar -Xmx512m /app/dr/TimeStatistic.jar 2

如果是windows系统的话,可以使用其自带的任务计划。

这两个都是参数可配置的。
sten 2006-10-27
  • 打赏
  • 举报
回复
在程序里可以写个界面,通过界面来获取想要设置的值,然后connect到数据库,通过以下语句实现对job的修改(请楼主自己测试):
关于oracle作业(job)的修改:
关于DBMS_JOB的函数(在程序包的SYS下面)包括创建作业,删除作业和
修改作业的函数:
其中修改作业的函数分成了具体修改哪一项的函数:
1)修改调用的过程(修改要执行的操作):execute dbms_job.what(job,what);
2)修改下次执行的时间:execute dbms_job.next_date(job,next_date);
3)修改时间间隔:execute dbms_job.interval(job,interval);
其中job为作业号,what和interval为varchat2类型的,next_date为DATE类型的。
以上操作要提交后才生效(commit;)

另外还有一个函数是:dbms_job.change,据说是在if what,next_date,or interval is null,
leave that value as-is.的时候才用。
嗯,当我想用它来修改下次执行时间的时候不成功,估计是要在那些参数都为空的时候才能用
例子为:execute dbms_job.change(11,null,null,'sysdate+1');
hwl1985 2006-10-26
  • 打赏
  • 举报
回复
后台任务也可以么 job太多了不好
hwl1985 2006-10-26
  • 打赏
  • 举报
回复
后台任务也可以么 任务太多了不好
hem 2006-10-26
  • 打赏
  • 举报
回复
你可以每天或每小时跑一次job ,
参数设置在一个系统表里面或者根据系统时间来判断是否需要执行 这些都可以在存储过程里面控制
zhangyong4444 2006-10-08
  • 打赏
  • 举报
回复
作业递交的语句在程序里怎么写啊???
zhangyong4444 2006-09-30
  • 打赏
  • 举报
回复
我要的是参数可配的
yanran_hill 2006-09-30
  • 打赏
  • 举报
回复
使用JOB的时候,涉及到JOB并发数量的维护问题(可能你建立了一个JOB,但是实际上没有定时启动)
除了job以外,我认为还有一种方法可以考虑:

在unix系统上,可以使用crontab,这个设置也比较简单
在windows上,可以使用定时启动程序的工具
gechangwei 2006-09-30
  • 打赏
  • 举报
回复
你要做到参数可配,这个配置页面在哪里?总要自己写吧,在写这个程序里加入一个作业递交的语句不就可以了?
Eric_1999 2006-09-29
  • 打赏
  • 举报
回复
用job是最好最方便的,触发器不能做到。
zhangyong4444 2006-09-29
  • 打赏
  • 举报
回复
但问题是这些时间点或者说条件应该是可配置的啊,
这么做的话不就变成了死的吗?
条件是在页面上设置的,
EriSeven 2006-09-28
  • 打赏
  • 举报
回复
--例子:每早8点执行名为PROCEDURE_NAME 的过程
--job包的具体用法 参见 http://www.oradb.net/pack/pack_001.htm


VARIABLE JOB1 NUMBER;

BEGIN
DBMS_JOB.SUBMIT(:JOB1,'PROCEDURE_NAME;',(TRUNC(SYSDATE+1)+8/24),'SYSDATE+1');
COMMIT;
END;
/

gechangwei 2006-09-28
  • 打赏
  • 举报
回复
1.建一个存储过程。
2.用DBMS_JOB包调度每月执行这个过程。
设该存储过程为:tmp_insert
那么,递交调度作业:
dbms_job.isubmit(101,'tmp_insert;','add_months(trunc(sysdate,''MM''),1)+1+2/24',sysdate);

说明:设置tmp_insert在每月2日凌晨两点自动执行,第一次执行时间为递交作业后,指定作业号为101(可以是任何数字,只要不重复)

看作业设置情况:
select * from user_jobs
zhzhs007 2006-09-28
  • 打赏
  • 举报
回复
JOB是完成一些定时作业的。使用调用你的程序就OK了
zhangyong4444 2006-09-28
  • 打赏
  • 举报
回复
能说具体一点吗?我不知道job是什么?
Visual_Studio_Net 2006-09-28
  • 打赏
  • 举报
回复
用job应该是不错的选择

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧