定义了触发器
CREATE OR REPLACE TRIGGER wa_item_createitemview
--所属项目:工资管理
--使用说明:当表wa_item中增加或者删除记录时,触发过程pro_createitemview的执行
--by Lijm at 2006.11.8
AFTER INSERT or DELETE ON WA_ITEM
FOR EACH ROW
BEGIN
pro_createitemview;
END;我在WA_ITEM增加或者删除了记录,可是为什么过程pro_createitemview没有被执行?
CREATE OR REPLACE TRIGGER wa_item_createitemview
--所属项目:工资管理
--使用说明:当表wa_item中增加或者删除记录时,触发过程pro_createitemview的执行
--by Lijm at 2006.11.8
AFTER INSERT or DELETE ON WA_ITEM
FOR EACH ROW
BEGIN
pro_createitemview;
END;我在WA_ITEM增加或者删除了记录,可是为什么过程pro_createitemview没有被执行?
create or replace procedure pro_CreateItemView
--所属项目:工资管理项目
--使用说明:在wa_item中增加或者删除记录后,触发器触发该过程执行,动态创建关于表wa_item的交叉视图;
--by Lijm at 2006.11.5
as
ddl_sql varchar2(800);
begin
--对用户bizdata1授予创建视图的权限;
execute immediate 'grant create view to bizdata1';
--取得工资项目
declare CURSOR c_test is select distinct a.S_ITEM_CODE from WA_ITEM a;
begin
for v_test in c_test
loop
--根据取得的工资项目,创建DDL语句的动态部分
ddl_sql := ddl_sql ||', SUM(CASE WHEN a.s_item_code = '||v_test.S_ITEM_CODE||' then a.n_item_value else 0 end) as item'||v_test.s_item_code;
end loop;
end;
--整合DDL语句;
ddl_sql:='create or replace view V_WA_Item as select a.s_wage_id ' || ddl_sql || ' from WA_DATA a group by a.s_wage_id --由pro_creatitemview动态创建'; --执行DDL语句;
execute immediate ddl_sql;
--如果意外则返回空;
exception
when others then
null;
end ;
WHERE t.trigger_name ='WA_ITEM_CREATEITEMVIEW'
察看触发器状态
exception
when others then
null;
所以,执行DDL出错后什么也没做就返回触发器。实际上是触发器已经被触发。你把exception注释后再看看。