oracle存储过程和触发器

来源:互联网 发布:深圳华策数据 编辑:程序博客网 时间:2024/05/16 11:40
--过程
创建过程,create procedure语句可以用于创建过程,简化语法如下:
create [or replace] procedure procedure_name
[(parameter_name [in|out|in out] type [,...])]
{is | as}
begin
  procedure_body
end parameter_name;

其中,or replace说明如果该过程已经存在,则用新的过程代替它。该选项可以用来修改一个现有过程;in|out|in out定义了参数的模式。in为默认的模式。type指定参数的类型。 procedure_body包含执行过程任务的sql和pl/sql语句。

--创建一个过程,给某个教师加工资create or replaceprocedure update_t_sal(t_tno in t.tno%type, t_num in number)ast_count_id integer;begin   select count(*) into t_count_id from t   where t_tno=tno;  if t_count_id = 1 then    update t     set sal=sal+t_num    where  t_tno=tno;    commit;  end if;exception  when others then  rollback;end update_t_sal;--过程的调用call update_t_sal('t1', 100);--删除过程drop procedure update_t_sal;

--触发器
触发器(trigger)是当特定的SQL DML语句,如insert,update或delete语句在特定的数据库表上运行时,由数据库自动运行(或者用技术来讲是自动激活)的过程。触发器对于实现表中某个列值的高级变更审计等功能非常有用。简化语法如下:
create [or replace] trigger trigger_name
{before|after|instead of} trigger_event
on table_name
[for each row [when trigger_condition]]
begin
  trigger_body
end trigger_name
其中,for each row指定触发器是一个行级触发器,即当触发器激活时,trigger_body中包含的代码会为每一行运行一次,如果for each row没有,则触发器是一个语句级触发器,即不管所作用的行有多少,当触发器激活时,trigger_body中包含的语句只运行一次。befor指定触发器在触发事件运行之前激活,after是定触发器在触发事件运行之后激活,instead of指定用触发器激活代替触发事件的运行。


0 0
原创粉丝点击