oracle自动运行package,oracle数据库触发器,存储过程,定时器job,package的基本用法总结...

--定时器job语法参数解析

使用Submit()过程,工作被正常地计划好。 这个过程有五个参数:job、what、next_date、interval与no_parse。 PROCEDURE Submit (jobOUT binary_ineger, What      IN  varchar2, next_date IN  date, interval  IN  varchar2, no_parse  IN  booean:=FALSE) job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。 what参数是将被执行的PL/SQL代码块。 next_date参数指识何时将运行这个工作。 interval参数何时这个工作将被重执行。 no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE 指示此PL/SQL代码在它第一次执行时应进行语法分析, 而FALSE指示本PL/SQL代码应立即进行语法分析。

--创建定时器job:

1.定时同步数据,可用以两台服务器数据库数据的同步

declare job number;      --系统生成job标示id

begin

sys.dbms_job.submit(job,'thme_to_thme2;',sysdate,'sysdate+1/1440');

end;

1.查询jobs的相关视图

select job,last_date,last_sec,broken,failures,interval, what from dba_jobs

dba_jobs:系统表

job: 指的是job的id号。比如上面的 41

failures:job执行的时候失败次数,如果超过了15次,那么broken列将被标为Y,以后就不会运行该job了

broken:默认为N,如果为Y,意味着不再执行该job!

interval:执行job的间隔时间。

what:该job的实际工作。

2.查看相关job信息

相关视图

dba_jobs

all_jobs

user_jobs

dba_jobs_running 包含正在运行job相关信息

---存储过程例子:

1.实现表数据复制

create or replace procedure thme_to_thme2 as--无参数的过程

rownums number;--变量定义

myid   number(8);

myname varchar(20) :='赋初值';

tem    varchar(20);

cursor c1 is --赋值给游标,is后面是PL/SQL体

select distinct t.nid, t.sname from T_HBM t;

begin

rownums := 0;--赋初值

if c1%isopen = false then

--打开游标

open c1;

end if;

loop

rownums := rownums + 1;

fetch c1 --从游标中获得值赋值给变量,循环,直到结束

into myid, myname;

exit when c1%notfound;

insert into T_HBM2(ID,Name) values(myid,myname);

if mod(rownums,2)=0 then

commit;

end if;

end loop;

end;

--触发器:

1.实现在删除一条记录复制到另外一张表

/*new是新插入的数据,old是原来的数据

insert只会有new,代表着要插入的新记录

delete只会有old,代表着要删除的记录

update由于执行的是先删除旧的记录,再插入新的记录,因此new和old都会有,且含义与上面的相同

*/

create or replace trigger TR_TBM

before delete on T_HBM --在增删改成之前或之后

for each row     --对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

declare

counts number; --声明变量

newid  number; --声明变量

begin

/*

select count(*)

into counts --给变量赋值

from T_HBM t

where t.nID = :new.nID; --new 表示要插入的数据对象,即T_HBM表中的一条记录。这个模块只是举例

if counts = 0 then

newid := seq_THBM.Nextval;

end if;

*/

insert into T_HBM_DEL (ID, NAME) values (:OLD.nid, :old.sname); --old是执行上面删除T_HBM中的对象(一条记录)

end TR_TBM;

1.禁止删除某张表的数据

CREATE OR REPLACE TRIGGER "TR_HBM_DEL"

BEFORE delete ON T_HBM

begin

Raise_application_error(20001, '禁止该表数据!');  --弹出提示信息

end;

0818b9ca8b590ca3270a3433284dd417.png

这是平时工作中的一点小总结比较简单。类似的很多功能可以通过上面的知识去实现。希望能对大家有点启发!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值