oracle procedure trigger 小例子

  --sql window中写存储过程(本例对dept_copy表的操作)
create or replace procedure p_update_dept(
l_remarker in number,--0增,1删,2改
l_deptno in number,
l_dname in varchar2,
l_loc in varchar2,
l_result out varchar2 --传出参数
)
is
begin
l_result := '0000';
if l_remarker = 0 then --0 增加
insert into dept_copy values(l_deptno,l_dname,l_loc);
elsif l_remarker = 1 then --1删除
delete from dept_copy p where p.deptno = l_deptno;
elsif l_remarker = 2 then --2修改
update dept_copy p set p.loc = l_loc,p.dname = l_dname where p.deptno = l_deptno;
end if;
commit;
exception
when others then
rollback;
l_result:='1111';
end;

-----------------------------------------------
--调用存储过程(主要是java中调用)
-- test window中调用存储过程(可在output选项卡中看到执行返回的结果,对哪个表操作,看哪个表也能看出来。)
declare
-- Local variables here
l_result varchar2(4); --返回值的长度是好写上
begin
-- Test statements here
p_update_dept(0,99,'ACCOUNTING','NEW YORK',l_result); --p_update_dept为存过程名称,括号里为存储过程定义的参数。
dbms_output.put_line(l_result);
end;
========================触发器小例子===================

--行级触发器,一个表中数据发生变化时同时修改另一个表中对应字段的值
create or replace trigger trig2
after update on dept_copy
for each row --针对每一行
begin
update emp_copy e
set e.deptno = :NEW.deptno
where e.deptno = :old.deptno;
end;
/*当表dept_copy的deptno字段发生变化,修改对应表emp_copy的deptno字段的值
*/
-- 当执行更新下表时触发器被触发
update dept_copy d set d.deptno = 99 where d.deptno = 10;
---------------------------------------------------
---语句级触发器(用的较少)
create or replace trigger t_emp_copy
before insert or delete or update on emp_copy
begin
if inserting then
insert into emp_copy_log
values
(seq_emp_copy_log.nextval, 'insert', user, sysdate);
elsif deleting then
insert into emp_copy_log
values
(seq_emp_copy_log.nextval, 'delete', user, sysdate);
elsif updating then
insert into emp_copy_log
values
(seq_emp_copy_log.nextval, 'update', user, sysdate);
end if;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值