yth.
Pada Package dan Package Bodies mempunyai tabel dgn nama yg sama tetapi 
scriptnya beda dalam satu object schema.
Mohon bantuan dari show error script terlampir dgn message error sbb:

All of LG_UPDATES_NUMENTRIES, TABLE_UPDATETS must be declared

Terima kasih
Syam


      
____________________________________________________________________________________
Be a better pen pal. 
Text or chat with friends inside Yahoo! Mail. See how.  
http://overview.mail.yahoo.com/
  ----------

 IS
-- PL/SQL Block
FUNCTION F_SUM
 (
        lng_TIME_SERIES_PK_Basis        IN NUMBER,
        lng_TIME_SERIES_PK      IN NUMBER,
        str_Action              IN VARCHAR2,
        lng_VALUE               IN NUMBER,
        date_TIME               IN DATE,
        lng_OPERATION_PK        IN NUMBER
 ) RETURN  BOOLEAN
 IS
        bool_MASK               BOOLEAN := TRUE;
        lng_VALUE_Old           NUMBER;
        lng_VALUE_New           NUMBER;
        lng_DATA_RESULT_PK      NUMBER;
        dbl_AVAILABLE_COUNT     NUMBER;
        date_TIME_FROM          DATE;
        date_TIME_TO            DATE;
 BEGIN
        DBMS_OUTPUT.PUT_LINE('IN SUMME');
        DBMS_OUTPUT.PUT_LINE(str_Action);
        IF str_Action='DELETE' or str_Action='INSERT' THEN
                SELECT DATA_RESULT_PK, VALUE, TIME_FROM, TIME_TO
                INTO    lng_DATA_RESULT_PK, lng_VALUE_Old,              
date_TIME_FROM,date_TIME_TO
                FROM    DATA_RESULT
                WHERE TIME_SERIES_PK = lng_TIME_SERIES_PK
                AND     date_TIME >= TIME_FROM
                AND     date_TIME <TIME_TO;
                IF NOT lng_DATA_RESULT_PK IS NULL THEN
                        -- the Case: DATA_RESULT.VALUE IS NULL and str_Action 
is not possible, because
                        -- there are no data, that can be deleted.
                        IF lng_VALUE_Old IS NULL THEN
                                lng_VALUE_Old := 0;
                        END IF;
                        IF str_Action = 'INSERT' THEN
                                lng_VALUE_New := lng_VALUE_Old + lng_VALUE;
                        ELSIF str_Action = 'DELETE' THEN
                                lng_VALUE_New := lng_VALUE_Old - lng_VALUE;
                                IF lng_VALUE_New = 0 Then
                                        DATA_TRIGGER.lng_UpdateTS_NUMENTRIES := 
DATA_TRIGGER.lng_UpdateTS_NUMENTRIES + 1;
                                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_SERIES_PK:=lng_TIME_SERIES_PK_Basis;
                                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).DATA_RESULT_PK:=
 lng_DATA_RESULT_PK;
                                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_FROM:= 
date_TIME_FROM;
                                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_TO:= 
date_TIME_TO;
                                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).OPERATION_PK:=lng_OPERATION_PK;
                                END IF;
                        END IF;
                        UPDATE DATA_RESULT
                        SET VALUE = lng_VALUE_New
                        WHERE DATA_RESULT_PK = lng_DATA_RESULT_PK;
                        DBMS_OUTPUT.PUT_LINE('NEUE SUMME: ' || lng_VALUE_New );
                        bool_MASK := FALSE;
                END IF;
        END IF;
        RETURN bool_MASK;
EXCEPTION
        WHEN NO_DATA_FOUND THEN
                bool_MASK := TRUE;
                RETURN bool_MASK;
END F_SUM;
FUNCTION F_AVERAGE
(
        lng_TIME_SERIES_PK_Basis        IN NUMBER,
        lng_TIME_SERIES_PK                      IN      NUMBER,
        str_Action                                              IN VARCHAR2,
        lng_VALUE                                               IN      NUMBER,
        date_TIME                                               IN DATE
) RETURN  BOOLEAN
IS
                bool_Mask                                       BOOLEAN := TRUE;
                lng_VALUE_Old                           NUMBER;
                lng_VALUE_New                           NUMBER;
                lng_DATA_RESULT_PK         NUMBER;
                lng_DATA_RES_COUNT         NUMBER;
BEGIN
        IF str_Action='INSERT' or str_Action='DELETE' THEN
                SELECT  DATA_RESULT_PK,
                                        VALUE,
                                        DATA_RES_COUNT
                INTO            lng_DATA_RESULT_PK,
                                        lng_VALUE_Old,
                                        lng_DATA_RES_COUNT
                FROM DATA_RESULT
                WHERE TIME_SERIES_PK = lng_TIME_SERIES_PK
                AND     date_TIME >= TIME_FROM
                AND     date_TIME < TIME_TO;
                IF NOT lng_DATA_RESULT_PK IS NULL THEN
                        IF lng_VALUE_Old IS NULL THEN
                                lng_VALUE_Old := 0;
                                lng_DATA_RES_COUNT := 0;
                        END IF;
                        IF str_Action='INSERT' THEN
                                lng_VALUE_New := (lng_VALUE_Old * 
lng_DATA_RES_COUNT + lng_Value) / (lng_DATA_RES_COUNT +1);
                                lng_DATA_RES_COUNT := lng_DATA_RES_COUNT + 1;
                                UPDATE  DATA_RESULT
                                SET             VALUE = lng_VALUE_New,
                                                        DATA_RES_COUNT =  
lng_DATA_RES_COUNT
                                WHERE   DATA_RESULT_PK = lng_DATA_RESULT_PK;
                                bool_MASK := FALSE;
--      DBMS_OUTPUT.PUT_LINE('ALTER AVG: ' || lng_VALUE_New );
                        ELSIF str_Action = 'DELETE' THEN
                                --In this case, DATA_RES_COUNT cannot be NULL
                                IF lng_DATA_RES_COUNT > 1 THEN
                                        lng_VALUE_New := (lng_VALUE_Old * 
lng_DATA_RES_COUNT - lng_Value) / (lng_DATA_RES_COUNT - 1);
                                ELSE
                                        lng_VALUE_New := NULL;
                                END IF;
                                UPDATE  DATA_RESULT
                                SET             VALUE = lng_VALUE_New,
                                                        DATA_RES_COUNT = 
DATA_RES_COUNT - 1
                                WHERE   DATA_RESULT_PK = lng_DATA_RESULT_PK;
                                bool_MASK := FALSE;
                        END IF;
                                DBMS_OUTPUT.PUT_LINE('NEUER AVG: ' || 
lng_VALUE_New );
                END IF;
        END IF;
        RETURN bool_MASK;
EXCEPTION
        WHEN NO_DATA_FOUND THEN
                bool_MASK := TRUE;
                RETURN bool_MASK;
END F_AVERAGE;
FUNCTION F_MIN
(
        lng_TIME_SERIES_PK_Basis        IN      NUMBER,
        lng_TIME_SERIES_PK                      IN      NUMBER,
        str_Action                                              IN VARCHAR2,
        lng_VALUE                                               IN NUMBER,
        date_TIME                                               IN DATE
)
RETURN BOOLEAN
IS
                bool_MASK                                       BOOLEAN:=TRUE;
                lng_VALUE_Old                           NUMBER;
                lng_DATA_RESULT_PK              NUMBER;
                date_TIME_FROM                          DATE;
                date_TIME_TO                            DATE;
BEGIN
        IF str_Action='INSERT'  or str_Action ='DELETE' THEN
      SELECT    DATA_RESULT_PK,
                                        VALUE,
                                        TIME_FROM,
                                        TIME_TO
      INTO              lng_DATA_RESULT_PK,
                                        lng_VALUE_Old,
                                        date_TIME_FROM,
                                        date_TIME_TO
      FROM              DATA_RESULT
      WHERE     TIME_SERIES_PK = lng_TIME_SERIES_PK
      AND               date_TIME >= TIME_FROM
                AND             date_TIME < TIME_TO;
                DBMS_OUTPUT.PUT_LINE('Altes Min: ' || lng_VALUE_Old);
                IF NOT lng_DATA_RESULT_PK IS NULL THEN
                        IF str_Action='INSERT' THEN
                                IF lng_VALUE_Old IS NULL OR lng_VALUE < 
lng_VALUE_Old THEN
                                UPDATE DATA_RESULT
                                        SET VALUE = lng_VALUE
                                WHERE DATA_RESULT_PK = lng_DATA_RESULT_PK;
                                DBMS_OUTPUT.PUT_LINE('NEUES MIN: ' || lng_VALUE 
);
                                END IF;
                        bool_MASK := FALSE;
                        ELSIF str_Action ='DELETE' THEN
                                IF lng_VALUE = lng_VALUE_Old THEN
                                        -- IF the value is the mininum value of 
the intervall, then it cannot be decided,
                                        --      whats the new minimum
                                DBMS_OUTPUT.PUT_LINE('Basiszeitreihe: ' || 
lng_TIME_SERIES_PK_Basis);
                                        DATA_TRIGGER.lng_UpdateTS_NUMENTRIES := 
DATA_TRIGGER.lng_UpdateTS_NUMENTRIES + 1;
                                        
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_SERIES_PK:=lng_TIME_SERIES_PK_Basis;
                                        
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).DATA_RESULT_PK:=
 lng_DATA_RESULT_PK;
                                        
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_FROM:= 
date_TIME_FROM;
                                        
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_TO:= 
date_TIME_TO;
                                        
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).OPERATION_PK:=1081987;
                                        bool_MASK := FALSE;
                                ELSE
                                        -- IF the value is not the mininum 
value of the intervall, then nothing must be done
                                        --      and the intervall must not be 
calculated new.
                                        bool_MASK := FALSE;
                                END IF;
                        END IF;
                ELSE
                        -- IF there is no intervall for the value, then the 
time series must be masked to be
                        --      recalculated.
                        bool_MASK := TRUE;
                END IF;
        END IF;
        RETURN bool_MASK;
EXCEPTION
        WHEN NO_DATA_FOUND THEN
                bool_MASK := TRUE;
                RETURN bool_MASK;
END F_MIN;
FUNCTION F_MAX
(
        lng_TIME_SERIES_PK_Basis        IN      NUMBER,
        lng_TIME_SERIES_PK                      IN      NUMBER,
        str_Action                                              IN VARCHAR2,
        lng_VALUE                                               IN NUMBER,
        date_TIME                                               IN DATE
)
RETURN BOOLEAN
IS
        lng_VALUE_Old                   NUMBER;
        lng_DATA_RESULT_PK      NUMBER;
        date_TIME_FROM                  DATE;
        date_TIME_TO                    DATE;
        bool_MASK                               BOOLEAN := TRUE;
BEGIN
        IF str_Action = 'INSERT' OR str_Action='DELETE' THEN
       SELECT   DATA_RESULT_PK,
                                VALUE,
                                TIME_FROM,
                                TIME_TO
       INTO     lng_DATA_RESULT_PK,
                                lng_VALUE_Old,
                                date_TIME_FROM,
                                date_TIME_TO
       FROM     DATA_RESULT
       WHERE    TIME_SERIES_PK = lng_TIME_SERIES_PK
       AND              date_TIME >= TIME_FROM
       AND              date_TIME < TIME_TO;
       IF NOT lng_DATA_RESULT_PK IS NULL THEN
                IF str_Action = 'INSERT' THEN
                        IF lng_VALUE_Old IS NULL OR lng_VALUE > lng_VALUE_Old 
THEN
                                UPDATE DATA_RESULT
                                SET VALUE = lng_VALUE
                                WHERE DATA_RESULT_PK = lng_DATA_RESULT_PK;
                                DBMS_OUTPUT.PUT_LINE('NEUES MAX: ' || lng_VALUE 
);
                        END IF;
                        bool_MASK := FALSE;
                ELSIF str_Action='DELETE' THEN
                        IF lng_VALUE = lng_VALUE_Old THEN
                                DATA_TRIGGER.lng_UpdateTS_NUMENTRIES := 
DATA_TRIGGER.lng_UpdateTS_NUMENTRIES + 1;
                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_SERIES_PK:=lng_TIME_SERIES_PK_Basis;
                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).DATA_RESULT_PK:=
 lng_DATA_RESULT_PK;
                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_FROM:= 
date_TIME_FROM;
                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).TIME_TO:= 
date_TIME_TO;
                                
DATA_TRIGGER.Table_UpdateTS(DATA_TRIGGER.lng_UpdateTS_NUMENTRIES).OPERATION_PK:=1081988;
                                bool_MASK := FALSE;
                                ELSE
                                        -- IF the value is not the maxinum 
value of the intervall, then nothing must be done
                                        --      and the intervall must not be 
calculated new.
                                        bool_MASK := FALSE;
                                END IF;
                        END IF;
                ELSE
                        -- IF there is no intervall for the value, then the 
time series must be masked to be
                        --      recalculated.
                        bool_MASK := TRUE;
                END IF;
        END IF;
        RETURN bool_MASK;
EXCEPTION
        WHEN NO_DATA_FOUND THEN
                bool_MASK := TRUE;
                RETURN bool_MASK;
END F_MAX;
PROCEDURE P_LOAD_CURSOR
(
        dbl_TIME_SERIES_PK              IN      NUMBER
)
IS
                CURSOR  c_Parent_TS IS
                SELECT  TIME_SERIES_PK_PARENT AS TIME_SERIES_PK,
                                        OPERATION_PK,
                                                                                
DATE_CHANGED_MIN,
                                                                                
DATE_CHANGED_MAX,
                                                                                
DATE_CHANGED_MIN AS DATE_CHANGED_MIN_MASK,
                                                                                
DATE_CHANGED_MAX AS DATE_CHANGED_MAX_MASK,
                                                                                
PRECALCULATE
                FROM            TS_TS,
                                           V_TIME_SERIES
                WHERE    TS_TS.TIME_SERIES_PK_CHILD = dbl_TIME_SERIES_PK
                         AND
                                                                                
TS_TS.TIME_SERIES_PK_PARENT = V_TIME_SERIES.TIME_SERIES_PK;
BEGIN
        DATA_TRIGGER.lng_DerivedTS_NUMENTRIES:=0;
        FOR v_Parent IN c_Parent_TS LOOP
                                        DATA_TRIGGER.lng_DerivedTS_NUMENTRIES 
:= DATA_TRIGGER.lng_DerivedTS_NUMENTRIES + 1;
                                        
DATA_TRIGGER.Table_DerivedTS(DATA_TRIGGER.lng_DerivedTS_NUMENTRIES) := v_Parent;
--       DBMS_OUTPUT.PUT_LINE('Intervall ');
--              DBMS_OUTPUT.PUT_LINE(v_Parent.DATE_CHANGED_MIN_MASK);
--              DBMS_OUTPUT.PUT_LINE(v_Parent.DATE_CHANGED_MAX_MASK);
        END LOOP;
        DATA_TRIGGER.dbl_TIME_SERIES_PK_BASIC:= dbl_TIME_SERIES_PK;
END P_LOAD_CURSOR;
PROCEDURE P_CHANGE_CHANGE_INTERVALL
(
        i                                       IN NUMBER,
        date_TIME                                       IN  DATE
)
IS
BEGIN
-- DBMS_OUTPUT.PUT_LINE('In Change Intervall');
   IF DATA_TRIGGER.Table_DerivedTS(i).DATE_CHANGED_MIN_MASK IS NULL OR 
DATA_TRIGGER.Table_DerivedTS(i).DATE_CHANGED_MAX_MASK IS NULL THEN
        DATA_TRIGGER.Table_DerivedTS(i).DATE_CHANGED_MIN_MASK := date_TIME;
                DATA_TRIGGER.Table_DerivedTS(i).DATE_CHANGED_MAX_MASK := 
date_TIME;
        ELSE
                IF date_TIME < 
DATA_TRIGGER.Table_DerivedTS(i).DATE_CHANGED_MIN_MASK THEN
                        DATA_TRIGGER.Table_DerivedTS(i).DATE_CHANGED_MIN_MASK 
:= date_TIME;
                END IF;
                 IF date_TIME > 
DATA_TRIGGER.Table_DerivedTS(i).DATE_CHANGED_MAX_MASK THEN
                DATA_TRIGGER.Table_DerivedTS(i).DATE_CHANGED_MAX_MASK := 
date_TIME;
                END IF;
        END IF;
END P_CHANGE_CHANGE_INTERVALL;
PROCEDURE P_TIME_SERIES_LEVEL2
(
        lng_TIME_SERIES_PK              IN      NUMBER,
        str_Action                                      IN VARCHAR2,
        lng_VALUE                                       IN NUMBER,
        date_TIME                                       IN      DATE
)
IS
                lng_OPERATION_PK                           NUMBER;
                date_DATE_CHANGED_MIN           DATE;
                date_DATE_CHANGED_MAX           DATE;
                date_DATE_AVAILABLE_FROM        DATE;
                date_DATE_AVAILABLE_TO          DATE;
                lng_DATE_AVAILABLE_COUNT        NUMBER;
                bool_MASK                                               BOOLEAN 
:= TRUE;
                bool_UPDATE_DATA_RESULT         BOOLEAN := TRUE;
    Table_DerivedTS                                             
DATA_TRIGGER.Type_Table_DerivedTS;
         lng_DerivedTS_NUMENTRIES               BINARY_INTEGER := 0;
BEGIN
--   DBMS_OUTPUT.PUT_LINE('Basiszeitreihe ' || lng_TIME_SERIES_PK);
--   DBMS_OUTPUT.PUT_LINE(str_Action || ' ' || date_TIME );
        IF DATA_TRIGGER.dbl_TIME_SERIES_PK_BASIC = -1 OR
           DATA_TRIGGER.dbl_TIME_SERIES_PK_BASIC <> lng_TIME_SERIES_PK THEN
                                  P_LOAD_CURSOR(lng_TIME_SERIES_PK);
        END IF;
        Table_DerivedTS:=DATA_TRIGGER.Table_DerivedTS;
        lng_DerivedTS_NUMENTRIES:=DATA_TRIGGER.lng_DerivedTS_NUMENTRIES;
   FOR i IN 1..lng_DerivedTS_NUMENTRIES LOOP
                -- If the Time Series should not be precalculated, then 
DATA_RESULT must not be
                --      updated. But the Time Series has to be masked.
                IF Table_DerivedTS(i).PRECALCULATE <> - 1 Then
                          bool_UPDATE_DATA_RESULT := FALSE;
         ELSE
                                        bool_UPDATE_DATA_RESULT:= TRUE;
                END IF;
                -- If the Time Series has already been masked and the time of 
the data point is
                --      in the change intervall, then neither DATA_RESULT must 
be updated nor the
                -- Change Intervall has to be adapted.
                bool_MASK := TRUE;
                IF Table_DerivedTS(i).DATE_CHANGED_MIN_MASK IS NOT NULL THEN
                        IF date_TIME >= 
Table_DerivedTS(i).DATE_CHANGED_MIN_MASK AND
                                                date_TIME <= 
Table_DerivedTS(i).DATE_CHANGED_MAX_MASK THEN
                                bool_UPDATE_DATA_RESULT := FALSE;
                                   bool_MASK := FALSE;
                         END iF;
                END IF;
                IF bool_UPDATE_DATA_RESULT THEN
                        IF Table_DerivedTS(i).OPERATION_PK = 1081985 THEN
                bool_MASK:=F_SUM(lng_TIME_SERIES_PK,
                                                                                
 Table_DerivedTS(i).TIME_SERIES_PK,
                                                                                
                str_Action,
                                                                                
                lng_VALUE,
                                                                                
                                                                                
                                        date_TIME,
                                                                                
                                                                                
                                        1081985);
                        ELSIF Table_DerivedTS(i).OPERATION_PK = 1081992 THEN
            -- COUNT(VALUE) liegt vor - gleiche Fall, wie SUM, mit Value_Old = 
1 und Value_New = 1
                bool_MASK:=F_SUM(lng_TIME_SERIES_PK,
                                                                                
                                Table_DerivedTS(i).TIME_SERIES_PK,
                                                                        
str_Action,
                                                                        1,
                                                                        
date_TIME,
                                                                                
                                                                        
1081992);
     ELSIF Table_DerivedTS(i).OPERATION_PK = 1081991 THEN
                                        bool_MASK:=F_AVERAGE(lng_TIME_SERIES_PK,
                                                                  
Table_DerivedTS(i).TIME_SERIES_PK,
                                                                                
str_Action,
                                                                lng_VALUE,
                                                                                
date_TIME);
         ELSIF Table_DerivedTS(i).OPERATION_PK = 1081987 THEN
                bool_MASK:=F_MIN(lng_TIME_SERIES_PK,
                                                                         
Table_DerivedTS(i).TIME_SERIES_PK,
                                                                           
str_Action,
                                                                         
lng_VALUE,
                                                                        
date_TIME);
         ELSIF Table_DerivedTS(i).OPERATION_PK = 1081988 THEN
                bool_MASK:=F_MAX(lng_TIME_SERIES_PK,
                                                                        
Table_DerivedTS(i).TIME_SERIES_PK,
                                                                           
str_Action,
                                                                        
lng_VALUE,
                                                                        
date_TIME);
         END IF;
                END IF;
                IF bool_MASK THEN
                                        P_CHANGE_CHANGE_INTERVALL(i,
                                                                                
                                                          date_TIME);
                END IF;
        END LOOP;
END P_TIME_SERIES_LEVEL2;
END TIME_SERIES_MASK;


[Non-text portions of this message have been removed]

Kirim email ke