Dear All
Mhn bantuan menambahkan deklarasi pada DATA_TRIGGER agar TIME_SERIES_MASK dpt
berstatus VALID, dgn script sbb:
A. TIME_SERIES_MASK script:
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;
B. DATA_TRIGGER script:
IS
TYPE Type_TSInterval IS RECORD
(
TIME_SERIES_PK_BASIC NUMBER,
DATA_RESULT_PK
NUMBER,
OPERATION_PK
NUMBER,
TIME_FROM
DATE,
TIME_TO
DATE
);
TYPE Table_TSInterval IS TABLE of Type_TSInterval INDEX BY
BINARY_INTEGER;
TSInterval
Table_TSInterval;
TSInterval_NUM
BINARY_INTEGER := 0;
TYPE Type_TSDerived IS RECORD
(
TIME_SERIES_PK NUMBER,
TIME_SERIES_PK_BASIC NUMBER,
OPERATION_PK
NUMBER,
DATE_CHANGED_MIN DATE,
DATE_CHANGED_MAX DATE,
PRECALCULATE
NUMBER,
DATE_CLASS_PK
NUMBER,
DELTA
NUMBER,
CHANGED
NUMBER,
REFERENCE_DATE
DATE,
MAP_DELTA
NUMBER,
MAP_TYPE
NUMBER,
REFERENCE_DELTA
NUMBER
);
TYPE Table_TSDerived IS TABLE of Type_TSDerived INDEX BY
BINARY_INTEGER;
TSDerived
Table_TSDerived;
TSDerived_NUM
BINARY_INTEGER := 0;
TYPE Type_TSBasic IS RECORD
(
TIME_SERIES_PK
NUMBER,
DERIVED_INSERTED
BOOLEAN,
CHANGED
BOOLEAN,
DATE_AVAILABLE_COUNT NUMBER,
DATE_AVAILABLE_FROM DATE,
DATE_AVAILABLE_TO
DATE,
DATA_POINT_DELETED
BOOLEAN
);
TYPE Table_TSBasic IS TABLE of Type_TSBasic INDEX BY
BINARY_INTEGER;
TSBasic
Table_TSBasic;
TSBasic_NUM
BINARY_INTEGER := 0;
TYPE Type_TSBasic_TSDerived IS RECORD
(
TIME_SERIES_PK_BASIC NUMBER,
TIME_SERIES_PK_DERIVED NUMBER,
POSITION
NUMBER
);
TYPE Table_TSBasic_TSDerived IS TABLE of Type_TSBasic_TSDerived
INDEX BY BINARY_INTEGER;
TSBasic_TSDerived
Table_TSBasic_TSDerived;
TSBasic_TSDerived_NUM
BINARY_INTEGER := 0;
END DATA_TRIGGER;
Best regards
SYAM
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search.
http://tools.search.yahoo.com/newsearch/category.php?category=shopping
[Non-text portions of this message have been removed]

