Oracle创建存储过程,创建定时任务

在Oracle数据库中,创建存储过程和定时任务(也称为调度任务)是常见的数据库管理任务。以下是创建存储过程和定时任务的步骤和说明。

创建存储过程

创建存储过程的sql脚本

sql 复制代码
create or replace procedure 存储过程名称...
is
begin
  脚本逻辑...
COMMIT;
end;

脚本示例,将user表的数据插入到account表(注:这里我示例的两个表字段都是一样的,所以可以直接插,不一样的话需要调整一下insert语句)

sql 复制代码
create or replace procedure account_procedure
is
begin
  delete from account;
  insert into account
select * from user;
COMMIT;
end;

调用存储过程

sql 复制代码
--BEGIN
  --存储过程名称
--END
--示例
BEGIN
  ACCOUNT_PROCEDURE
END

删除存储过程

sql 复制代码
--DROP PROCEDURE 存储过程名称;
DROP PROCEDURE account_procedure;

创建定时任务

DBMS_JOB创建定时任务的脚本。

sql 复制代码
DECLARE
  job_id NUMBER;
BEGIN
  -- 创建定时任务
  SYS.DBMS_JOB.SUBMIT(
    job       => job_id,
    what      => 'ACCOUNT_PROCEDURE;', -- 要执行的PL/SQL代码或存储过程
    next_date => TRUNC(SYSDATE, 'DD') + 11/24, -- 下次执行时间为今天11点
    interval  => 'TRUNC(SYSDATE + 1, ''DD'') + 11/24', -- 每天11点执行
    no_parse  => TRUE
  );
  -- 输出确认信息
  DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(job_id));
  -- 提交事务
  COMMIT;
EXCEPTION
  WHEN OTHERS THEN
    -- 如果发生错误,输出错误信息
    DBMS_OUTPUT.PUT_LINE('创建定时任务时发生错误: ' || SQLERRM);
END;

删除定时任务的sql脚本

sql 复制代码
DECLARE
  job_id NUMBER;
BEGIN
  -- 查询 job_id
  SELECT job
  INTO job_id
  FROM user_jobs
  WHERE what = 'ACCOUNT_PROCEDURE;';
  -- 删除定时任务
  DBMS_JOB.REMOVE(job_id);
  -- 输出确认信息
  DBMS_OUTPUT.PUT_LINE('定时任务 ' || TO_CHAR(job_id) || ' 已成功删除。');
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    -- 如果没有找到任务,输出错误信息
    DBMS_OUTPUT.PUT_LINE('没有找到匹配的定时任务。');
  WHEN OTHERS THEN
    -- 如果发生其他错误,输出错误信息
    DBMS_OUTPUT.PUT_LINE('删除定时任务时发生错误: ' || SQLERRM);
END;
相关推荐
深度研习笔记2 分钟前
OpenCV工业视觉进阶14|SQLite违规数据库存储+历史记录查询+Excel报表导出,完成项目商用数据闭环(验收必备)
数据库·opencv·sqlite
要开心吖ZSH2 小时前
一文搞懂:JDK 21 虚拟线程 vs N种异步方案,到底该怎么选?
java·数据库·jdk·虚拟线程
guodingdingh7 小时前
软件开发工作问题总结0718
java·开发语言·数据库
GuWenyue9 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
Miao1213111 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
CodexDave11 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
碎光拾影11 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
曾阿伦11 小时前
MongoDB 查询语句备忘手册
数据库·mongodb
一叶龙洲11 小时前
wslg打开Ubuntu24.04默认打开图形界面
linux·服务器·数据库·ubuntu
CCPC不拿奖不改名11 小时前
大模型推理架构与开源生态知识整理
数据库·windows·python·架构·langchain·开源·github