Cristian Lucero %!s(int64=5) %!d(string=hai) anos
pai
achega
109a41b93d
Modificáronse 1 ficheiros con 47 adicións e 1 borrados
  1. 47 1
      alter_table.sql

+ 47 - 1
alter_table.sql

@@ -52,4 +52,50 @@ BEGIN
 END;
 
 
-ALTER TABLE EVALUACION_PROVEEDOR ADD SCORECARD_ID int NULL;
+ALTER TABLE EVALUACION_PROVEEDOR ADD SCORECARD_ID int NULL;
+
+
+
+
+CREATE OR REPLACE TRIGGER TRG_ACTION_PLAN_AVG
+AFTER INSERT OR UPDATE OR DELETE ON PLAN_ACCION_DET
+FOR EACH ROW
+DECLARE
+
+    L_PLAN_ACCION_ID NUMBER(15);
+    L_PLAN_PARENT_ID NUMBER(15);
+    L_PLAN_ID NUMBER(15);
+    L_PLAN_ACCION_DET_AVG NUMBER(15,2);
+    L_PLAN_ACCION_AVG NUMBER(15,2);
+
+  cursor cur_avg_det is
+     select avg(AVANCE),PARENT_ID  from PLAN_ACCION_DET d where d.id=:NEW.id
+      and PARENT_ID is not null
+  group by PARENT_ID ;
+
+  cursor cur_avg_plan is
+     select avg(AVANCE),PLAN_ACCION_ID  from PLAN_ACCION_DET d where d.id=:NEW.id
+      and PARENT_ID is null
+    group by PLAN_ACCION_ID ;
+
+BEGIN
+
+
+      OPEN cur_avg_det;
+       FETCH cur_avg_det INTO L_PLAN_ACCION_DET_AVG,L_PLAN_PARENT_ID;
+      CLOSE cur_avg_det;
+
+      UPDATE PLAN_ACCION_DET SET AVANCE = L_PLAN_ACCION_DET_AVG
+       WHERE ID =L_PLAN_PARENT_ID;
+--         where ID = :new.ID AND PARENT_ID IS NULL;
+
+
+      OPEN cur_avg_plan;
+       FETCH cur_avg_plan INTO L_PLAN_ACCION_AVG,L_PLAN_ID;
+      CLOSE cur_avg_plan;
+
+      UPDATE PLAN_ACCION SET AVANCE_PROVEEDOR = L_PLAN_ACCION_AVG
+        where ID = L_PLAN_ID;
+
+
+END;