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