178:
179: PROCEDURE FINALIZE;
180:
181: PROCEDURE LOG(
182: p_code EDW_CALSUM4_BSC_LOG.CODE%TYPE
183: , p_text EDW_CALSUM4_BSC_LOG.TEXT%TYPE
184: , p_info EDW_CALSUM4_BSC_LOG.INFO%TYPE
185: );
186:
179: PROCEDURE FINALIZE;
180:
181: PROCEDURE LOG(
182: p_code EDW_CALSUM4_BSC_LOG.CODE%TYPE
183: , p_text EDW_CALSUM4_BSC_LOG.TEXT%TYPE
184: , p_info EDW_CALSUM4_BSC_LOG.INFO%TYPE
185: );
186:
187: FUNCTION GET_FACT_ID(
180:
181: PROCEDURE LOG(
182: p_code EDW_CALSUM4_BSC_LOG.CODE%TYPE
183: , p_text EDW_CALSUM4_BSC_LOG.TEXT%TYPE
184: , p_info EDW_CALSUM4_BSC_LOG.INFO%TYPE
185: );
186:
187: FUNCTION GET_FACT_ID(
188: p_fact_name IN EDW_FACTS_MD_V.FACT_NAME%TYPE
219: p_hier IN VARCHAR
220: )RETURN VARCHAR2;
221:
222:
223: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
224: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE
225: );
226:
227: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
223: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
224: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE
225: );
226:
227: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
228: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
229: p_measure_name IN EDW_FACT_ATTRIBUTES_MD_V.ATTRIBUTE_NAME%TYPE
230: );
231:
228: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
229: p_measure_name IN EDW_FACT_ATTRIBUTES_MD_V.ATTRIBUTE_NAME%TYPE
230: );
231:
232: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
233: p_fact_id IN EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE,
234: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE
235: );
236:
233: p_fact_id IN EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE,
234: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE
235: );
236:
237: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
238: p_fact_id IN EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE,
239: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
240: p_fact_time_dim_table IN FactDimColTable,
241: p_fact_nontime_dim_table IN FactDimColTable,
243: p_fact_measure_id IN EDW_FACT_ATTRIBUTES_MD_V.ATTRIBUTE_ID%TYPE
244: );
245:
246:
247: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
248: p_fact_id IN EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE,
249: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
250: p_fact_measure_table IN FactMeasureTable
251: );
264: ) RETURN NUMBER;
265:
266: --Kernal Entries
267: -- #1.1
268: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
269: errbuf OUT NOCOPY VARCHAR2,
270: retcode OUT NOCOPY NUMBER
271: ) IS
272: l_fact_id EDW_FACTS_MD_V.FACT_ID%TYPE;
290:
291: --start processing fact by fact
292: l_fact_index := l_fact_tbl.FIRST;
293: LOOP
294: POPULATE_EDW_CALSUM4_BSC(
295: l_fact_tbl(l_fact_index).fact_id,
296: l_fact_tbl(l_fact_index).fact_name);
297: EXIT WHEN l_fact_index = l_fact_tbl.LAST;
298: l_fact_index := l_fact_tbl.NEXT(l_fact_index);
306: retcode := SQLCODE;
307: errbuf := SQLERRM;
308: LOG(retcode, SQLERR, errbuf);
309: LOG(NULL, ABORTED, 'Process aborted!!');
310: END POPULATE_EDW_CALSUM4_BSC;
311:
312: -- #1.2
313: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
314: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
309: LOG(NULL, ABORTED, 'Process aborted!!');
310: END POPULATE_EDW_CALSUM4_BSC;
311:
312: -- #1.2
313: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
314: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
315: errbuf OUT NOCOPY VARCHAR2,
316: retcode OUT NOCOPY NUMBER
317: ) IS
316: retcode OUT NOCOPY NUMBER
317: ) IS
318: BEGIN
319: INITIALIZE;
320: POPULATE_EDW_CALSUM4_BSC(p_fact_name);
321: FINALIZE;
322: EXCEPTION
323: WHEN OTHERS THEN
324: retcode := SQLCODE;
324: retcode := SQLCODE;
325: errbuf := SQLERRM;
326: LOG(retcode, SQLERR, errbuf);
327: LOG(NULL, ABORTED, 'Process aborted!!');
328: END POPULATE_EDW_CALSUM4_BSC;
329:
330: -- #1.3
331: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
332: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
327: LOG(NULL, ABORTED, 'Process aborted!!');
328: END POPULATE_EDW_CALSUM4_BSC;
329:
330: -- #1.3
331: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
332: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
333: p_measure_name IN EDW_FACT_ATTRIBUTES_MD_V.ATTRIBUTE_NAME%TYPE,
334: errbuf OUT NOCOPY VARCHAR2,
335: retcode OUT NOCOPY NUMBER
335: retcode OUT NOCOPY NUMBER
336: ) IS
337: BEGIN
338: INITIALIZE;
339: POPULATE_EDW_CALSUM4_BSC(p_fact_name, p_measure_name);
340: FINALIZE;
341: EXCEPTION
342: WHEN OTHERS THEN
343: CLOSE c_fact;
344: retcode := SQLCODE;
345: errbuf := SQLERRM;
346: LOG(retcode, SQLERR, errbuf);
347: LOG(NULL, ABORTED, 'Process aborted!!');
348: END POPULATE_EDW_CALSUM4_BSC;
349: --Kernal Entries
350:
351: -- Second Level Procedures
352: -- #2.1 : Called by Entry #1.1
349: --Kernal Entries
350:
351: -- Second Level Procedures
352: -- #2.1 : Called by Entry #1.1
353: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
354: p_fact_id IN EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE,
355: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE
356: ) IS
357: l_fact_measure_table FactMeasureTable;
360: IF(CHECK_FACT_VALIDILITY(p_fact_name) <> VALID) THEN
361: RETURN ;
362: ELSE
363: l_fact_measure_table:= GET_FACT_MEASURE(p_fact_name);
364: POPULATE_EDW_CALSUM4_BSC(p_fact_id, p_fact_name, l_fact_measure_table);
365: END IF;
366: END POPULATE_EDW_CALSUM4_BSC;
367:
368: -- #2.2 : Called by Entry #1.2
362: ELSE
363: l_fact_measure_table:= GET_FACT_MEASURE(p_fact_name);
364: POPULATE_EDW_CALSUM4_BSC(p_fact_id, p_fact_name, l_fact_measure_table);
365: END IF;
366: END POPULATE_EDW_CALSUM4_BSC;
367:
368: -- #2.2 : Called by Entry #1.2
369: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
370: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE
365: END IF;
366: END POPULATE_EDW_CALSUM4_BSC;
367:
368: -- #2.2 : Called by Entry #1.2
369: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
370: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE
371: ) IS
372: l_fact_measure_table FactMeasureTable;
373: l_fact_id EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE;
376: RETURN ;
377: ELSE
378: l_fact_id := GET_FACT_ID(p_fact_name);
379: l_fact_measure_table:= GET_FACT_MEASURE(p_fact_name);
380: POPULATE_EDW_CALSUM4_BSC(l_fact_id, p_fact_name, l_fact_measure_table);
381: END IF;
382: END POPULATE_EDW_CALSUM4_BSC;
383:
384: -- #2.3 : Called by Entry #1.3
378: l_fact_id := GET_FACT_ID(p_fact_name);
379: l_fact_measure_table:= GET_FACT_MEASURE(p_fact_name);
380: POPULATE_EDW_CALSUM4_BSC(l_fact_id, p_fact_name, l_fact_measure_table);
381: END IF;
382: END POPULATE_EDW_CALSUM4_BSC;
383:
384: -- #2.3 : Called by Entry #1.3
385: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
386: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
381: END IF;
382: END POPULATE_EDW_CALSUM4_BSC;
383:
384: -- #2.3 : Called by Entry #1.3
385: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
386: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
387: p_measure_name IN EDW_FACT_ATTRIBUTES_MD_V.ATTRIBUTE_NAME%TYPE
388: ) IS
389: l_fact_id EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE;
398:
399: -- create a one item measure-table
400: l_fact_measure_table(0).measure_name := p_measure_name;
401: l_fact_measure_table(0).measure_id := l_measure_id;
402: POPULATE_EDW_CALSUM4_BSC(l_fact_id, p_fact_name, l_fact_measure_table);
403: ELSE
404: LOG(NULL, FAILED , ' Corrupted metadata definition, ' || p_measure_name || ', in ' || p_fact_name);
405: RETURN ;
406: END IF;
403: ELSE
404: LOG(NULL, FAILED , ' Corrupted metadata definition, ' || p_measure_name || ', in ' || p_fact_name);
405: RETURN ;
406: END IF;
407: END POPULATE_EDW_CALSUM4_BSC;
408:
409: -- Third Level Procedures
410: -- #3.1 : called by #2.1, #2.2 & #2.3
411: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
407: END POPULATE_EDW_CALSUM4_BSC;
408:
409: -- Third Level Procedures
410: -- #3.1 : called by #2.1, #2.2 & #2.3
411: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
412: p_fact_id IN EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE,
413: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
414: p_fact_measure_table IN FactMeasureTable
415: ) IS
425: IF ( l_fact_time_dim_table.COUNT > 0
426: AND p_fact_measure_table.COUNT > 0) THEN
427: l_measure_index := p_fact_measure_table.FIRST;
428: LOOP
429: POPULATE_EDW_CALSUM4_BSC(
430: p_fact_id,
431: p_fact_name,
432: l_fact_time_dim_table,
433: l_fact_nontime_dim_table,
439: END LOOP;
440: ELSE
441: LOG(NULL, FAILED, ' No measure or time dimension defined for the fact '|| p_fact_name);
442: END IF;
443: END POPULATE_EDW_CALSUM4_BSC;
444:
445: -- The Fourth Level Procedure
446: -- #4.1 : Called by #3.1
447: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
443: END POPULATE_EDW_CALSUM4_BSC;
444:
445: -- The Fourth Level Procedure
446: -- #4.1 : Called by #3.1
447: PROCEDURE POPULATE_EDW_CALSUM4_BSC(
448: p_fact_id IN EDW_FACT_ATTRIBUTES_MD_V.FACT_ID%TYPE,
449: p_fact_name IN EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
450: p_fact_time_dim_table IN FactDimColTable,
451: p_fact_nontime_dim_table IN FactDimColTable,
453: p_fact_measure_id IN EDW_FACT_ATTRIBUTES_MD_V.ATTRIBUTE_ID%TYPE
454: ) IS
455: l_calsum_stmt varchar2(30000) := NULL;
456: l_calsum varchar2(100);
457: l_sumid EDW_CALSUM4_BSC.CALSUM_ID%TYPE;
458: l_hier varchar2(50);
459: l_hier_id EDW_CALSUM4_BSC.HIERID%TYPE;
460: l_ErrorCode EDW_CALSUM4_BSC_LOG.CODE%TYPE;
461: l_ErrorText EDW_CALSUM4_BSC_LOG.TEXT%TYPE;
455: l_calsum_stmt varchar2(30000) := NULL;
456: l_calsum varchar2(100);
457: l_sumid EDW_CALSUM4_BSC.CALSUM_ID%TYPE;
458: l_hier varchar2(50);
459: l_hier_id EDW_CALSUM4_BSC.HIERID%TYPE;
460: l_ErrorCode EDW_CALSUM4_BSC_LOG.CODE%TYPE;
461: l_ErrorText EDW_CALSUM4_BSC_LOG.TEXT%TYPE;
462: l_fact_dim_index BINARY_INTEGER;
463: l_err_info EDW_CALSUM4_BSC_LOG.INFO%TYPE;
456: l_calsum varchar2(100);
457: l_sumid EDW_CALSUM4_BSC.CALSUM_ID%TYPE;
458: l_hier varchar2(50);
459: l_hier_id EDW_CALSUM4_BSC.HIERID%TYPE;
460: l_ErrorCode EDW_CALSUM4_BSC_LOG.CODE%TYPE;
461: l_ErrorText EDW_CALSUM4_BSC_LOG.TEXT%TYPE;
462: l_fact_dim_index BINARY_INTEGER;
463: l_err_info EDW_CALSUM4_BSC_LOG.INFO%TYPE;
464: BEGIN
457: l_sumid EDW_CALSUM4_BSC.CALSUM_ID%TYPE;
458: l_hier varchar2(50);
459: l_hier_id EDW_CALSUM4_BSC.HIERID%TYPE;
460: l_ErrorCode EDW_CALSUM4_BSC_LOG.CODE%TYPE;
461: l_ErrorText EDW_CALSUM4_BSC_LOG.TEXT%TYPE;
462: l_fact_dim_index BINARY_INTEGER;
463: l_err_info EDW_CALSUM4_BSC_LOG.INFO%TYPE;
464: BEGIN
465: LOG(NULL, PROCESSING, '->Fact: ' || p_fact_name || ', ' || 'Measure: ' || p_fact_measure);
459: l_hier_id EDW_CALSUM4_BSC.HIERID%TYPE;
460: l_ErrorCode EDW_CALSUM4_BSC_LOG.CODE%TYPE;
461: l_ErrorText EDW_CALSUM4_BSC_LOG.TEXT%TYPE;
462: l_fact_dim_index BINARY_INTEGER;
463: l_err_info EDW_CALSUM4_BSC_LOG.INFO%TYPE;
464: BEGIN
465: LOG(NULL, PROCESSING, '->Fact: ' || p_fact_name || ', ' || 'Measure: ' || p_fact_measure);
466:
467: l_calsum_stmt := GET_SQL_STMT(p_fact_id, p_fact_name, p_fact_time_dim_table, p_fact_nontime_dim_table, p_fact_measure, p_fact_measure_id, '445');
506: END LOOP;
507: l_err_info := l_err_info || ' might not be defined/valid in ' || p_fact_name;
508: LOG(l_ErrorCode, l_ErrorText, l_err_info);
509: LOG(NULL, FAILED, '<-Fact: ' || p_fact_name || ', ' || 'Measure: ' || p_fact_measure);
510: END POPULATE_EDW_CALSUM4_BSC;
511:
512: FUNCTION GET_FACT_MEASURE_ID(
513: p_fact_name EDW_FACT_ATTRIBUTES_MD_V.FACT_NAME%TYPE,
514: p_measure_name EDW_FACT_ATTRIBUTES_MD_V.ATTRIBUTE_NAME%TYPE
635: END IF;
636: END;
637:
638: PROCEDURE LOG(
639: p_code EDW_CALSUM4_BSC_LOG.CODE%TYPE
640: , p_text EDW_CALSUM4_BSC_LOG.TEXT%TYPE
641: , p_info EDW_CALSUM4_BSC_LOG.INFO%TYPE
642: ) IS
643: BEGIN
636: END;
637:
638: PROCEDURE LOG(
639: p_code EDW_CALSUM4_BSC_LOG.CODE%TYPE
640: , p_text EDW_CALSUM4_BSC_LOG.TEXT%TYPE
641: , p_info EDW_CALSUM4_BSC_LOG.INFO%TYPE
642: ) IS
643: BEGIN
644: INSERT INTO EDW_CALSUM4_BSC_LOG(CODE, TEXT, INFO, LAST_UPDATE_DATE, CREATION_DATE)
637:
638: PROCEDURE LOG(
639: p_code EDW_CALSUM4_BSC_LOG.CODE%TYPE
640: , p_text EDW_CALSUM4_BSC_LOG.TEXT%TYPE
641: , p_info EDW_CALSUM4_BSC_LOG.INFO%TYPE
642: ) IS
643: BEGIN
644: INSERT INTO EDW_CALSUM4_BSC_LOG(CODE, TEXT, INFO, LAST_UPDATE_DATE, CREATION_DATE)
645: VALUES(p_code, p_text, p_info, SYSDATE, SYSDATE);
640: , p_text EDW_CALSUM4_BSC_LOG.TEXT%TYPE
641: , p_info EDW_CALSUM4_BSC_LOG.INFO%TYPE
642: ) IS
643: BEGIN
644: INSERT INTO EDW_CALSUM4_BSC_LOG(CODE, TEXT, INFO, LAST_UPDATE_DATE, CREATION_DATE)
645: VALUES(p_code, p_text, p_info, SYSDATE, SYSDATE);
646: COMMIT;
647: END LOG;
648:
659: l_calsum_stmt_psudo VARCHAR2(1000) := NULL;
660: l_calsum_stmt VARCHAR2(30000) := NULL;
661: l_calsum_stmt_tmp VARCHAR2(4000) := NULL;
662: l_calsum_fromwhere_clause VARCHAR2(30000) := NULL;
663: l_ErrorCode EDW_CALSUM4_BSC_LOG.CODE%TYPE;
664: l_ErrorText EDW_CALSUM4_BSC_LOG.TEXT%TYPE;
665: l_err_info EDW_CALSUM4_BSC_LOG.INFO%TYPE;
666: l_fact_dim_index BINARY_INTEGER;
667: l_start BINARY_INTEGER;
660: l_calsum_stmt VARCHAR2(30000) := NULL;
661: l_calsum_stmt_tmp VARCHAR2(4000) := NULL;
662: l_calsum_fromwhere_clause VARCHAR2(30000) := NULL;
663: l_ErrorCode EDW_CALSUM4_BSC_LOG.CODE%TYPE;
664: l_ErrorText EDW_CALSUM4_BSC_LOG.TEXT%TYPE;
665: l_err_info EDW_CALSUM4_BSC_LOG.INFO%TYPE;
666: l_fact_dim_index BINARY_INTEGER;
667: l_start BINARY_INTEGER;
668: BEGIN
661: l_calsum_stmt_tmp VARCHAR2(4000) := NULL;
662: l_calsum_fromwhere_clause VARCHAR2(30000) := NULL;
663: l_ErrorCode EDW_CALSUM4_BSC_LOG.CODE%TYPE;
664: l_ErrorText EDW_CALSUM4_BSC_LOG.TEXT%TYPE;
665: l_err_info EDW_CALSUM4_BSC_LOG.INFO%TYPE;
666: l_fact_dim_index BINARY_INTEGER;
667: l_start BINARY_INTEGER;
668: BEGIN
669:
709:
710: l_calsum_stmt_psudo := ' ''' || p_fact_name || ''', ' || p_fact_id || ', '''|| p_fact_measure || ''', ' || p_fact_measure_id || ', ';
711:
712: l_calsum_stmt_tmp :=
713: 'INSERT INTO EDW_CALSUM4_BSC(FACT, FACT_ID, MEASURE, MEASURE_ID, TIMEHIER, HIERID, CALSUMMARY, CALSUM_ID, LAST_UPDATE_DATE, CREATION_DATE) ';
714: l_calsum_stmt := l_calsum_stmt_tmp;
715:
716: IF(p_hier = '445') THEN
717: l_calsum_stmt_tmp :=
845: END;
846:
847: PROCEDURE FINALIZE IS
848: BEGIN
849: LOG(NULL, DONE, 'EDW_CALSUM4_BSC table was populated successfully!');
850: END;
851:
852: FUNCTION GET_FACT_ID(
853: p_fact_name IN EDW_FACTS_MD_V.FACT_NAME%TYPE