公司一触发器a的代码已经超过8000,系统提示代码过长编译错误.
目前的做法是分拆成两个做法.a,a1出于成本考虑,我想将它改写成触发器 将a1 改写为过程 prod_a1(a in char,..... , g out int)其中g 为0/1 0 代表过程中无任一模块发生异常,1 代表有 (目前不用,只是作为扩展功能预留的)我现在不知道触发器要怎么调用外部过程,并得到返回值???请大哥多教教.
目前的做法是分拆成两个做法.a,a1出于成本考虑,我想将它改写成触发器 将a1 改写为过程 prod_a1(a in char,..... , g out int)其中g 为0/1 0 代表过程中无任一模块发生异常,1 代表有 (目前不用,只是作为扩展功能预留的)我现在不知道触发器要怎么调用外部过程,并得到返回值???请大哥多教教.
create or replace trigger a
before ... on ....
declare
g int;
a varchar2;
.....
begin
.........(把你的参数赋值)
prod_a1(a,..... , g)
if g=1 then
...
end if;
.......
end a;直接把存储过程放在那里就行了,输出参数执行完了就能用
2 begin
3 dbms_output.put_line('p_test executed');
4 name :='rr';
5* end;
SQL> /过程已创建。
SQL> create or replace trigger t_test before insert on test
2 declare
3 v_name varchar2(20);
4 begin
5 p_test(1,v_name);
6 dbms_output.put_line('trigger executed');
7 end;
8 /触发器已创建SQL> insert into test values(5,'ggg');已创建 1 行。SQL> set serveroutput on
SQL> insert into test values(5,'ggg');
p_test executed
trigger executed已创建 1 行。SQL>