如何创建定时任务IOCL_INVOICE_DATA_S_JOB每小时调用存储过程IOCL_INVOICE_DATA_S_PROC?
定时任务IOCL_INVOICE_DATA_S_JOB实现方案
以下是主流数据库环境下的具体实现方案,根据你的数据库类型选择对应操作:
Oracle 实现方案
使用DBMS_SCHEDULER包创建定时任务:
BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'IOCL_INVOICE_DATA_S_JOB', job_type => 'STORED_PROCEDURE', job_action => 'IOCL_INVOICE_DATA_S_PROC', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=HOURLY; INTERVAL=1', -- 每小时执行一次 enabled => TRUE, comments => '每小时调用存储过程IOCL_INVOICE_DATA_S_PROC的定时任务' ); END; /
- 注意事项:
- 确保当前用户拥有
DBMS_SCHEDULER的执行权限 - 存储过程
IOCL_INVOICE_DATA_S_PROC已存在且可被当前用户调用 - 修改任务用
DBMS_SCHEDULER.ALTER_JOB,删除任务用DBMS_SCHEDULER.DROP_JOB
- 确保当前用户拥有
MySQL 实现方案
通过事件调度器实现定时任务:
- 先确认事件调度器状态(若未开启则启用):
-- 检查状态 SHOW VARIABLES LIKE 'event_scheduler'; -- 开启调度器(需对应权限) SET GLOBAL event_scheduler = ON;
- 创建定时事件:
CREATE EVENT IOCL_INVOICE_DATA_S_JOB ON SCHEDULE EVERY 1 HOUR STARTS CURRENT_TIMESTAMP DO CALL IOCL_INVOICE_DATA_S_PROC();
- 注意事项:
- 确保事件调度器处于开启状态
- 当前用户拥有创建事件及调用目标存储过程的权限
- 禁用事件用
ALTER EVENT IOCL_INVOICE_DATA_S_JOB DISABLE;,删除用DROP EVENT IOCL_INVOICE_DATA_S_JOB;
SQL Server 实现方案
图形化操作(SSMS)
- 打开SQL Server Management Studio,展开SQL Server Agent -> 作业,右键选择新建作业
- 在常规选项卡输入作业名称
IOCL_INVOICE_DATA_S_JOB,补充描述 - 切换到步骤选项卡,点击新建:
- 步骤名称:如「调用存储过程」
- 类型:选择「Transact-SQL脚本(T-SQL)」
- 数据库:选择存储过程所在库
- 命令:输入
EXEC IOCL_INVOICE_DATA_S_PROC;,点击确定
- 切换到计划选项卡,点击新建:
- 计划名称:如「每小时执行计划」
- 频率:选择「每天」,每天频率设置为「每1小时」,持续时间设为全天
- 起始日期:设置任务启动日期,点击确定
- 点击确定完成作业创建
T-SQL脚本实现
-- 创建作业 EXEC msdb.dbo.sp_add_job @job_name = N'IOCL_INVOICE_DATA_S_JOB', @description = N'每小时调用存储过程IOCL_INVOICE_DATA_S_PROC的定时任务'; -- 添加作业步骤 EXEC msdb.dbo.sp_add_jobstep @job_name = N'IOCL_INVOICE_DATA_S_JOB', @step_name = N'调用存储过程', @subsystem = N'TSQL', @command = N'EXEC IOCL_INVOICE_DATA_S_PROC;', @database_name = N'你的数据库名称'; -- 替换为实际数据库名 -- 创建执行计划 EXEC msdb.dbo.sp_add_schedule @schedule_name = N'每小时执行计划', @freq_type = 4, -- 每天执行 @freq_interval = 1, @freq_subday_type = 8, -- 按小时执行 @freq_subday_interval = 1, -- 每1小时一次 @active_start_time = 000000; -- 从0点开始执行 -- 关联作业与计划 EXEC msdb.dbo.sp_attach_schedule @job_name = N'IOCL_INVOICE_DATA_S_JOB', @schedule_name = N'每小时执行计划'; -- 启用作业 EXEC msdb.dbo.sp_add_jobserver @job_name = N'IOCL_INVOICE_DATA_S_JOB';
- 注意事项:
- 确保SQL Server Agent服务处于运行状态
- 当前用户拥有创建SQL Server Agent作业的权限
- 存储过程
IOCL_INVOICE_DATA_S_PROC已存在于指定数据库中
内容的提问来源于stack exchange,提问作者sanjeeva rayudu
相关产品推荐
相关产品推荐

