Procedure sp_ca_comp_dly (temp_id IN VARCHAR2, user_id IN VARCHAR2, totfundtype IN VARCHAR2, exec_seq OUT NUMBER, Err_No OUT NUMBER) IS lcl_startdateky NUMBER; lcl_enddateky NUMBER; lcl_buid VARCHAR2(25); lcl_compid VARCHAR2(25); lcl_comp_opendt_ky NUMBER; lcl_comp_curr_ky NUMBER; lcl_comp_curr_id VARCHAR2(25); lcl_comp_curr_nm VARCHAR2(100); --Cursor Declarations --Cursor to select all Selected Composites from INT_REPORT_TEMPLATE_DET CURSOR SelectPortfolio IS SELECT comp.composite_ky comp_ky, comp.composite_id comp_id, comp.composite_short_nm comp_nm, cm.month_ky comp_open_dt, bu.bus_ut_ky bu_ky, bu.bus_ut_id bu_id FROM INT_REPORT_TEMPLATE_DET irtd, COMPOSITE comp, BUSINESS_UNIT bu, INT_REPORT_TEMPLATE irt, CALENDAR_MONTH cm WHERE irtd.template_id = temp_id AND irtd.template_id = irt.template_id AND irt.business_unit_id = bu.bus_ut_id AND irtd.report_item_id = comp.composite_id AND comp.bus_ut_id = bu.bus_ut_id AND cm.month_id = TO_NUMBER(TO_CHAR(comp.composite_open_dt, 'YYYYMM')) AND irtd.report_entity_id = 'COM' AND irtd.current_rec_in = 'Y' AND irtd.status_in = 'A' AND bu.current_rec_in = 'Y' ORDER BY comp_id; -- Cursor to get the Total fund records for the selected time period. CURSOR cur_totalfund IS SELECT dcr.begin_market_value_am tot_beg_mktv, dcr.rate_of_returns_pt tot_ror, dcr.date_ky tot_dt_ky FROM DAILY_COMPOSITE_RETURNS dcr, CODE_TYPE cd, FACT_TYPE fct, BUSINESS_UNIT bu, COMPOSITE comp WHERE dcr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND dcr.reporting_currency_ky = lcl_comp_curr_ky AND dcr.composite_ky = comp.composite_ky AND comp.bus_ut_id = lcl_buid AND comp.composite_id = lcl_compid AND dcr.date_ky > lcl_startdateky AND dcr.date_ky <= lcl_enddateky AND dcr.date_ky >= lcl_comp_opendt_ky AND dcr.region_ky = 0 AND dcr.country_ky = 0 AND dcr.inmt_type_hierarchy_level_ky = 0 AND dcr.industry_hierarchy_level_ky = 0 AND dcr.invest_mgt_firm_ky = 0 AND dcr.capital_size_ky = 0 AND dcr.return_method_ky = 0 AND dcr.currency_code_type_ky = cd.code_type_ky AND cd.code_type_id = 'PRIMRY' AND dcr.fact_type_ky = fct.fact_type_ky AND fct.fact_type_id = totfundtype ORDER BY tot_dt_ky DESC; -- Cursor to get the Benchmark total fund records for the selected time period. CURSOR cur_CBEND_tf IS SELECT dcbr.date_ky dt_ky, NVL(dcbr.rate_of_returns_pt, 0) cben_ror, ben.benchmark_nm ben_nm FROM DAILY_COMPOSITE_BEN_RETURNS dcbr, BENCHMARK_COMPOSITE_ASSOC bca, CODE_TYPE ct, INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, BUSINESS_UNIT bu, COMPOSITE comp, FACT_TYPE fct WHERE dcbr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND dcbr.composite_ky = comp.composite_ky AND comp.composite_id = lcl_compid AND comp.bus_ut_id = lcl_buid AND dcbr.reporting_currency_ky = lcl_comp_curr_ky AND dcbr.benchmark_ky = ben.benchmark_ky AND dcbr.benchmark_type_ky = bca.benchmark_type_ky AND dcbr.benchmark_type_ky = ct.code_type_ky AND bca.composite_ky = comp.composite_ky AND bca.benchmark_ky = ben.benchmark_ky AND bca.benchmark_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND dcbr.region_ky = 0 AND dcbr.date_ky > lcl_startdateky AND dcbr.date_ky <= lcl_enddateky AND dcbr.date_ky >= lcl_comp_opendt_ky AND dcbr.country_ky = 0 AND dcbr.inmt_type_hierarchy_level_ky = 0 AND dcbr.industry_hierarchy_level_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = 'PBMK' AND dcbr.fact_type_ky = fct.fact_type_ky AND fct.fact_type_id = 'TOTFUND' UNION SELECT dbubr.date_ky dt_ky, NVL(dbubr.rate_of_returns_pt, 0) cben_ror, ben.benchmark_nm ben_nm FROM DAILY_BUS_UT_BEN_RETURNS dbubr, CODE_TYPE ct, BUSINESS_UNIT bu, INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, FACT_TYPE fct WHERE dbubr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND ben.bus_ut_id = lcl_buid AND dbubr.benchmark_ky = ben.benchmark_ky AND dbubr.reporting_currency_ky = lcl_comp_curr_ky AND dbubr.code_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND dbubr.region_ky = 0 AND dbubr.date_ky > lcl_startdateky AND dbubr.date_ky <= lcl_enddateky AND dbubr.date_ky >= lcl_comp_opendt_ky AND dbubr.country_ky = 0 AND dbubr.inmt_type_hierarchy_level_ky = 0 AND dbubr.industry_hierarchy_level_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND ben.benchmark_id = irtd.report_item_id AND dbubr.fact_type_ky = fct.fact_type_ky AND fct.fact_type_id = 'TOTFUND' UNION SELECT dir.date_ky dt_ky, NVL(dir.rate_of_returns_pt, 0) cben_ror, DECODE(buia.demo_index_nm, NULL, ind.index_nm, buia.demo_index_nm) ben_nm FROM DAILY_INDEX_RETURNS dir, BUSINESS_UT_INDEX_ASSOC buia, FACT_TYPE fct, BUSINESS_UNIT bu, INT_REPORT_TEMPLATE_DET irtd, INDICES IND WHERE dir.index_ky = IND.index_ky AND dir.index_ky = buia.index_ky AND buia.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND buia.index_ky = IND.index_ky AND dir.reporting_currency_ky = lcl_comp_curr_ky AND dir.region_ky = 0 AND dir.fiscal_period_ky = 0 AND dir.industry_hierarchy_level_ky = 0 AND dir.date_ky > lcl_startdateky AND dir.date_ky <= lcl_enddateky AND dir.date_ky >= lcl_comp_opendt_ky AND dir.country_ky = 0 -- AND dir.inmt_type_hierarchy_level_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = IND.index_id AND dir.fact_type_ky = fct.fact_type_ky -- AND fct.fact_type_id = 'TOTFUND' ORDER BY dt_ky DESC; --Cursor to Fetch Details of values for different countries. CURSOR main_cur IS SELECT inmt.inmt_type_hierarchy_level_ky inmt_ky, dcr.reporting_currency_ky ccy_ky, dcr.country_ky ctry_ky, dcr.date_ky dt_ky, DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', '1025', inmt.inmt_type_hierarchy_level1_id) inmt_id, cd.calendar_dt cal_dt, NVL(dcr.rate_of_returns_pt, 0) ror, NVL(dcr.begin_market_value_am, 0) beg_mktv, inmt.inmt_type_hierarchy_level1_id comp_inmtid FROM BUSINESS_UNIT bu, INSTRUMENT_TYPE_HIERARCHY inmt, CALENDAR_DATE cd, COUNTRY ctry, DAILY_COMPOSITE_RETURNS dcr, COMPOSITE comp, CODE_TYPE ct, CURRENCY ccy WHERE bu.bus_ut_id = lcl_buid AND comp.bus_ut_id = lcl_buid AND dcr.industry_hierarchy_level_ky = 0 AND dcr.region_ky = 0 AND dcr.invest_mgt_firm_ky = 0 AND dcr.capital_size_ky = 0 AND dcr.return_method_ky = 0 AND dcr.fact_type_ky = 0 AND bu.bus_ut_ky = dcr.bus_ut_ky AND ctry.country_ky = dcr.country_ky AND ctry.country_ky <> 0 AND inmt.inmt_type_hierarchy_level_ky = dcr.inmt_type_hierarchy_level_ky AND ccy.currency_ky = dcr.reporting_currency_ky AND dcr.reporting_currency_ky = lcl_comp_curr_ky AND dcr.composite_ky = comp.composite_ky AND comp.composite_id = lcl_compid AND dcr.currency_code_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMRY' AND dcr.date_ky = cd.date_ky AND cd.date_ky > lcl_startdateky AND cd.date_ky <= lcl_enddateky AND dcr.date_ky >= lcl_comp_opendt_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') ORDER BY inmt_id, ctry_ky, comp_inmtid, dt_ky DESC; -- Cursor for Daily Composite Benchmarks. CURSOR cur_CBEND_Det IS SELECT dcbr.inmt_type_hierarchy_level_ky inmt_ky, dcbr.country_ky ctry_ky, dcbr.date_ky dt_ky, NVL(dcbr.rate_of_returns_pt, 0) cben_ror, NVL(dcbr.weight_fc, 0) wgt_fc, DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', '1025', inmt.inmt_type_hierarchy_level1_id) inmt_id, inmt.inmt_type_hierarchy_level1_id comp_inmtid FROM DAILY_COMPOSITE_BEN_RETURNS dcbr, BENCHMARK_COMPOSITE_ASSOC bca, CODE_TYPE ct, INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, BUSINESS_UNIT bu, COMPOSITE comp, INSTRUMENT_TYPE_HIERARCHY inmt, COUNTRY ctry WHERE dcbr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND dcbr.composite_ky = comp.composite_ky AND dcbr.reporting_currency_ky = lcl_comp_curr_ky AND comp.composite_id = lcl_compid AND comp.bus_ut_id = lcl_buid AND dcbr.benchmark_ky = ben.benchmark_ky AND dcbr.benchmark_type_ky = bca.benchmark_type_ky AND dcbr.benchmark_type_ky = ct.code_type_ky AND bca.composite_ky = comp.composite_ky AND bca.benchmark_ky = ben.benchmark_ky AND bca.benchmark_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND dcbr.region_ky = 0 AND dcbr.date_ky >= lcl_startdateky AND dcbr.date_ky <= lcl_enddateky AND dcbr.date_ky >= lcl_comp_opendt_ky AND dcbr.country_ky <> 0 AND dcbr.country_ky = ctry.country_ky AND inmt.inmt_type_hierarchy_level_ky = dcbr.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND dcbr.industry_hierarchy_level_ky = 0 AND dcbr.fact_type_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = 'PBMK' UNION SELECT dbubr.inmt_type_hierarchy_level_ky inmt_ky, dbubr.country_ky ctry_ky, dbubr.date_ky dt_ky, NVL(dbubr.rate_of_returns_pt, 0) cben_ror, NVL(dbubr.weight_fc, 0) wgt_fc, DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', '1025', inmt.inmt_type_hierarchy_level1_id) inmt_id, inmt.inmt_type_hierarchy_level1_id comp_inmtid FROM DAILY_BUS_UT_BEN_RETURNS dbubr, CODE_TYPE ct, BUSINESS_UNIT bu, COUNTRY ctry, INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, INSTRUMENT_TYPE_HIERARCHY inmt WHERE dbubr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND ben.bus_ut_id = lcl_buid AND dbubr.benchmark_ky = ben.benchmark_ky AND dbubr.reporting_currency_ky = lcl_comp_curr_ky AND dbubr.code_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND dbubr.region_ky = 0 AND dbubr.date_ky >= lcl_startdateky AND dbubr.date_ky <= lcl_enddateky AND dbubr.date_ky >= lcl_comp_opendt_ky AND dbubr.country_ky <> 0 AND dbubr.country_ky = ctry.country_ky AND inmt.inmt_type_hierarchy_level_ky = dbubr.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND dbubr.industry_hierarchy_level_ky = 0 AND dbubr.fact_type_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND ben.benchmark_id = irtd.report_item_id UNION SELECT dir.inmt_type_hierarchy_level_ky inmt_ky, dir.country_ky ctry_ky, dir.date_ky dt_ky, NVL(dir.rate_of_returns_pt, 0) cben_ror, NVL(dir.weight_fc, 0) wgt_fc, DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', '1025', inmt.inmt_type_hierarchy_level1_id) inmt_id, inmt.inmt_type_hierarchy_level1_id comp_inmtid FROM DAILY_INDEX_RETURNS dir, INSTRUMENT_TYPE_HIERARCHY inmt, BUSINESS_UT_INDEX_ASSOC buia, BUSINESS_UNIT bu, INT_REPORT_TEMPLATE_DET irtd, INDICES IND, COUNTRY ctry WHERE dir.index_ky = IND.index_ky AND dir.index_ky = buia.index_ky AND buia.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND buia.index_ky = IND.index_ky AND dir.reporting_currency_ky = lcl_comp_curr_ky AND dir.region_ky = 0 AND dir.fiscal_period_ky = 0 AND dir.industry_hierarchy_level_ky = 0 AND dir.fact_type_ky = 0 AND dir.date_ky >= lcl_startdateky AND dir.date_ky <= lcl_enddateky AND dir.date_ky >= lcl_comp_opendt_ky AND dir.country_ky <> 0 AND dir.country_ky = ctry.country_ky AND dir.inmt_type_hierarchy_level_ky = inmt.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = IND.index_id ORDER BY inmt_id, ctry_ky, comp_inmtid, dt_ky DESC; CURSOR cur_country_list IS SELECT DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', '1025', inmt.inmt_type_hierarchy_level1_id) inmt_id, DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', 'Cash', inmt.inmt_type_hierarchy_level1_nm) inmt_nm, dcr.country_ky ctry_ky, ctry.country_nm ctry_nm, dcr.date_ky dt_ky, inmt.inmt_type_hierarchy_level1_id comp_inmtid FROM BUSINESS_UNIT bu, INSTRUMENT_TYPE_HIERARCHY inmt, COUNTRY ctry, DAILY_COMPOSITE_RETURNS dcr, COMPOSITE comp, CODE_TYPE ct WHERE bu.bus_ut_id = lcl_buid AND comp.bus_ut_id = lcl_buid AND dcr.industry_hierarchy_level_ky = 0 AND dcr.region_ky = 0 AND dcr.invest_mgt_firm_ky = 0 AND dcr.capital_size_ky = 0 AND dcr.return_method_ky = 0 AND dcr.fact_type_ky = 0 AND bu.bus_ut_ky = dcr.bus_ut_ky AND ctry.country_ky = dcr.country_ky AND ctry.country_ky <> 0 AND inmt.inmt_type_hierarchy_level_ky = dcr.inmt_type_hierarchy_level_ky AND dcr.reporting_currency_ky = lcl_comp_curr_ky AND dcr.composite_ky = comp.composite_ky AND comp.composite_id = lcl_compid AND dcr.currency_code_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMRY' AND dcr.date_ky > lcl_startdateky AND dcr.date_ky <= lcl_enddateky AND dcr.date_ky >= lcl_comp_opendt_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') UNION SELECT DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', '1025', inmt.inmt_type_hierarchy_level1_id) inmt_id, DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', 'Cash', inmt.inmt_type_hierarchy_level1_nm) inmt_nm, dcbr.country_ky ctry_ky, ctry.country_nm ctry_nm, dcbr.date_ky dt_ky, inmt.inmt_type_hierarchy_level1_id comp_inmtid FROM DAILY_COMPOSITE_BEN_RETURNS dcbr, BENCHMARK_COMPOSITE_ASSOC bca, CODE_TYPE ct, INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, BUSINESS_UNIT bu, COMPOSITE comp, INSTRUMENT_TYPE_HIERARCHY inmt, COUNTRY ctry WHERE dcbr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND dcbr.composite_ky = comp.composite_ky AND dcbr.reporting_currency_ky = lcl_comp_curr_ky AND comp.composite_id = lcl_compid AND comp.bus_ut_id = lcl_buid AND dcbr.benchmark_ky = ben.benchmark_ky AND dcbr.benchmark_type_ky = bca.benchmark_type_ky AND dcbr.benchmark_type_ky = ct.code_type_ky AND bca.composite_ky = comp.composite_ky AND bca.benchmark_ky = ben.benchmark_ky AND bca.benchmark_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND dcbr.region_ky = 0 AND dcbr.date_ky > lcl_startdateky AND dcbr.date_ky <= lcl_enddateky AND dcbr.date_ky >= lcl_comp_opendt_ky AND dcbr.country_ky <> 0 AND dcbr.country_ky = ctry.country_ky AND inmt.inmt_type_hierarchy_level_ky = dcbr.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND dcbr.industry_hierarchy_level_ky = 0 AND dcbr.fact_type_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = 'PBMK' UNION SELECT DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', '1025', inmt.inmt_type_hierarchy_level1_id) inmt_id, DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', 'Cash', inmt.inmt_type_hierarchy_level1_nm) inmt_nm, dbubr.country_ky ctry_ky, ctry.country_nm ctry_nm, dbubr.date_ky dt_ky, inmt.inmt_type_hierarchy_level1_id comp_inmtid FROM DAILY_BUS_UT_BEN_RETURNS dbubr, CODE_TYPE ct, BUSINESS_UNIT bu, COUNTRY ctry, INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, INSTRUMENT_TYPE_HIERARCHY inmt WHERE dbubr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND ben.bus_ut_id = lcl_buid AND dbubr.benchmark_ky = ben.benchmark_ky AND dbubr.reporting_currency_ky = lcl_comp_curr_ky AND dbubr.code_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND dbubr.region_ky = 0 AND dbubr.date_ky > lcl_startdateky AND dbubr.date_ky <= lcl_enddateky AND dbubr.date_ky >= lcl_comp_opendt_ky AND dbubr.country_ky <> 0 AND dbubr.country_ky = ctry.country_ky AND inmt.inmt_type_hierarchy_level_ky = dbubr.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND dbubr.industry_hierarchy_level_ky = 0 AND dbubr.fact_type_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND ben.benchmark_id = irtd.report_item_id UNION SELECT DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', '1025', inmt.inmt_type_hierarchy_level1_id) inmt_id, DECODE(SUBSTR(UPPER(inmt.inmt_type_hierarchy_level1_nm), 1, 4), 'CASH', 'Cash', inmt.inmt_type_hierarchy_level1_nm) inmt_nm, dir.country_ky ctry_ky, ctry.country_nm ctry_nm, dir.date_ky dt_ky, inmt.inmt_type_hierarchy_level1_id comp_inmtid FROM DAILY_INDEX_RETURNS dir, INSTRUMENT_TYPE_HIERARCHY inmt, BUSINESS_UT_INDEX_ASSOC buia, BUSINESS_UNIT bu, INT_REPORT_TEMPLATE_DET irtd, INDICES IND, COUNTRY ctry WHERE dir.index_ky = IND.index_ky AND dir.index_ky = buia.index_ky AND buia.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND buia.index_ky = IND.index_ky AND dir.reporting_currency_ky = lcl_comp_curr_ky AND dir.region_ky = 0 AND dir.fiscal_period_ky = 0 AND dir.industry_hierarchy_level_ky = 0 AND dir.fact_type_ky = 0 AND dir.date_ky > lcl_startdateky AND dir.date_ky <= lcl_enddateky AND dir.date_ky >= lcl_comp_opendt_ky AND dir.country_ky <> 0 AND dir.country_ky = ctry.country_ky AND dir.inmt_type_hierarchy_level_ky = inmt.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = IND.index_id ORDER BY inmt_id, ctry_nm, comp_inmtid, dt_ky DESC; -- Cursor to fetch the details of currency countries. -- This cursor should be grouped by currency code. CURSOR cur_currency_ctry IS SELECT DECODE(subqry.ctry_nm, 'IFD', lcl_comp_curr_id, ccy.currency_id) cur_id, subqry.dt_ky dt_ky, subqry.inmt_id inmt_id, DECODE(subqry.ctry_nm, 'IFD', lcl_comp_curr_nm, ccy.currency_nm) cur_nm, subqry.ctry_ky ctry_ky FROM CURRENCY ccy, CURRENCY_COUNTRY_ASSOC cca, (SELECT dcr.country_ky ctry_ky, ctry.country_nm ctry_nm, dcr.date_ky dt_ky, inmt.inmt_type_hierarchy_level1_id inmt_id FROM DAILY_COMPOSITE_RETURNS dcr, BUSINESS_UNIT bu, COMPOSITE comp, COUNTRY ctry, CODE_TYPE ct, INSTRUMENT_TYPE_HIERARCHY inmt WHERE dcr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND dcr.composite_ky = comp.composite_ky AND comp.composite_id = lcl_compid AND comp.bus_ut_id = lcl_buid AND dcr.reporting_currency_ky = lcl_comp_curr_ky AND dcr.date_ky > lcl_startdateky AND dcr.date_ky <= lcl_enddateky AND dcr.date_ky >= lcl_comp_opendt_ky AND dcr.region_ky = 0 AND dcr.inmt_type_hierarchy_level_ky = inmt.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND dcr.industry_hierarchy_level_ky = 0 AND dcr.invest_mgt_firm_ky = 0 AND dcr.capital_size_ky = 0 AND dcr.return_method_ky = 0 AND dcr.fact_type_ky = 0 AND dcr.country_ky <> 0 AND dcr.country_ky = ctry.country_ky AND dcr.currency_code_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMRY' UNION SELECT dcbr.country_ky ctry_ky, ctry.country_nm ctry_nm, dcbr.date_ky dt_ky, inmt.inmt_type_hierarchy_level1_id inmt_id FROM DAILY_COMPOSITE_BEN_RETURNS dcbr, BENCHMARK_COMPOSITE_ASSOC bca, CODE_TYPE ct, INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, BUSINESS_UNIT bu, COMPOSITE comp, INSTRUMENT_TYPE_HIERARCHY inmt, COUNTRY ctry WHERE dcbr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND dcbr.composite_ky = comp.composite_ky AND dcbr.reporting_currency_ky = lcl_comp_curr_ky AND comp.composite_id = lcl_compid AND comp.bus_ut_id = lcl_buid AND dcbr.benchmark_ky = ben.benchmark_ky AND dcbr.benchmark_type_ky = bca.benchmark_type_ky AND dcbr.benchmark_type_ky = ct.code_type_ky AND bca.composite_ky = comp.composite_ky AND bca.benchmark_ky = ben.benchmark_ky AND bca.benchmark_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND dcbr.region_ky = 0 AND dcbr.date_ky > lcl_startdateky AND dcbr.date_ky <= lcl_enddateky AND dcbr.date_ky >= lcl_comp_opendt_ky AND dcbr.country_ky <> 0 AND dcbr.country_ky = ctry.country_ky AND inmt.inmt_type_hierarchy_level_ky = dcbr.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND dcbr.industry_hierarchy_level_ky = 0 AND dcbr.fact_type_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = 'PBMK' UNION SELECT dbubr.country_ky ctry_ky, ctry.country_nm ctry_nm, dbubr.date_ky dt_ky, inmt.inmt_type_hierarchy_level1_id inmt_id FROM DAILY_BUS_UT_BEN_RETURNS dbubr, CODE_TYPE ct, BUSINESS_UNIT bu, COUNTRY ctry, INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, INSTRUMENT_TYPE_HIERARCHY inmt WHERE dbubr.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND ben.bus_ut_id = lcl_buid AND dbubr.benchmark_ky = ben.benchmark_ky AND dbubr.reporting_currency_ky = lcl_comp_curr_ky AND dbubr.code_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND dbubr.region_ky = 0 AND dbubr.date_ky > lcl_startdateky AND dbubr.date_ky <= lcl_enddateky AND dbubr.date_ky >= lcl_comp_opendt_ky AND dbubr.country_ky <> 0 AND dbubr.country_ky = ctry.country_ky AND inmt.inmt_type_hierarchy_level_ky = dbubr.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND dbubr.industry_hierarchy_level_ky = 0 AND dbubr.fact_type_ky = 0 AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND ben.benchmark_id = irtd.report_item_id UNION SELECT dir.country_ky ctry_ky, ctry.country_nm ctry_nm, dir.date_ky dt_ky, inmt.inmt_type_hierarchy_level1_id inmt_id FROM DAILY_INDEX_RETURNS dir, INSTRUMENT_TYPE_HIERARCHY inmt, BUSINESS_UT_INDEX_ASSOC buia, BUSINESS_UNIT bu, INT_REPORT_TEMPLATE_DET irtd, INDICES IND, COUNTRY ctry WHERE dir.index_ky = IND.index_ky AND dir.index_ky = buia.index_ky AND buia.bus_ut_ky = bu.bus_ut_ky AND bu.bus_ut_id = lcl_buid AND buia.index_ky = IND.index_ky AND dir.reporting_currency_ky = lcl_comp_curr_ky AND dir.region_ky = 0 AND dir.fiscal_period_ky = 0 AND dir.industry_hierarchy_level_ky = 0 AND dir.fact_type_ky = 0 AND dir.date_ky > lcl_startdateky AND dir.date_ky <= lcl_enddateky AND dir.date_ky >= lcl_comp_opendt_ky AND dir.country_ky <> 0 AND dir.country_ky = ctry.country_ky AND dir.inmt_type_hierarchy_level_ky = inmt.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = IND.index_id) subqry WHERE ccy.currency_ky = cca.currency_ky AND cca.country_ky = subqry.ctry_ky ORDER BY cur_nm, dt_ky DESC, ctry_ky, inmt_id ASC; -- Cursor to fetch the details of Risk-Free Returns. CURSOR cur_rf_returns IS SELECT subqry.inmt_ky inmt_ky, cca.country_ky ctry_ky, subqry.dt_ky dt_ky, subqry.rf_ror rf_ror FROM CURRENCY_COUNTRY_ASSOC cca, CURRENCY ccy, (SELECT DISTINCT dir.reporting_currency_ky curr_ky, dir.inmt_type_hierarchy_level_ky inmt_ky, dir.rate_of_returns_pt rf_ror, dir.date_ky dt_ky FROM DAILY_INDEX_RETURNS dir, INSTRUMENT_TYPE_HIERARCHY inmt, INDICES IND, INT_REPORT_TEMPLATE_DET irtd WHERE dir.index_ky = IND.index_ky AND dir.region_ky = 0 AND dir.date_ky > lcl_startdateky AND dir.date_ky <= lcl_enddateky AND dir.fiscal_period_ky = 0 AND dir.fact_type_ky = 0 AND dir.industry_hierarchy_level_ky = 0 AND dir.inmt_type_hierarchy_level_ky = inmt.inmt_type_hierarchy_level_ky AND inmt.inmt_type_hierarchy_level_no = '1' AND inmt.inmt_type_hierarchy_level1_id IN ('1005', '1010', '1025', '1030') AND IND.cash_return_in = 'Y' AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CASHINDX' AND irtd.report_item_id = IND.index_id) subqry WHERE cca.currency_ky = subqry.curr_ky AND ccy.currency_ky = cca.currency_ky UNION SELECT 99999.99 inmt_ky, 99999.99 ctry_ky, 99999.99 rf_ror, 99999.99 dt_ky FROM DUAL ORDER BY inmt_ky, ctry_ky, dt_ky DESC; -- Types declarations. lcl_mth_cadj_tab Pkg_Ca_Common_Procs.ror_table; lcl_tf_mth_tab Pkg_Ca_Common_Procs.keys_table; lcl_tf_ror_tab Pkg_Ca_Common_Procs.ror_table; lcl_bentf_ror_tab Pkg_Ca_Common_Procs.ror_table; lcl_tf_mktv_tab Pkg_Ca_Common_Procs.mktv_table; lcl_pf_mth_tab Pkg_Ca_Common_Procs.keys_table; lcl_pf_ror_tab Pkg_Ca_Common_Procs.ror_table; lcl_pf_mktv_tab Pkg_Ca_Common_Procs.mktv_table; lcl_ctry_ky_tab Pkg_Ca_Common_Procs.keys_table; lcl_inmt_id_tab Pkg_Ca_Common_Procs.names_table; lcl_act_pinid_tab Pkg_Ca_Common_Procs.names_table; lcl_ben_mth_tab Pkg_Ca_Common_Procs.keys_table; lcl_ben_ror_tab Pkg_Ca_Common_Procs.ror_table; lcl_bwgt_tab Pkg_Ca_Common_Procs.mktv_table; lcl_binmt_id_tab Pkg_Ca_Common_Procs.names_table; lcl_act_binid_tab Pkg_Ca_Common_Procs.names_table; lcl_bctry_ky_tab Pkg_Ca_Common_Procs.keys_table; lcl_rf_mth_tab Pkg_Ca_Common_Procs.keys_table; lcl_rfctry_ky_tab Pkg_Ca_Common_Procs.keys_table; lcl_rf_ror_tab Pkg_Ca_Common_Procs.ror_table; lcl_cur_ctyky_tab Pkg_Ca_Common_Procs.keys_table; lcl_cur_mth_tab Pkg_Ca_Common_Procs.keys_table; lcl_cur_inmt_tab Pkg_Ca_Common_Procs.names_table; lcl_cur_nm_tab Pkg_Ca_Common_Procs.names_table; lcl_cur_id_tab Pkg_Ca_Common_Procs.names_table; lcl_cty_mth_tab Pkg_Ca_Common_Procs.keys_table; lcl_con_ctyky_tab Pkg_Ca_Common_Procs.keys_table; lcl_con_ctynm_tab Pkg_Ca_Common_Procs.names_table; lcl_con_intid_tab Pkg_Ca_Common_Procs.names_table; lcl_act_intid_tab Pkg_Ca_Common_Procs.names_table; lcl_con_intnm_tab Pkg_Ca_Common_Procs.names_table; tf_mth_tab Pkg_Ca_Common_Procs.keys; tf_mktv_tab Pkg_Ca_Common_Procs.mktv; -- Variable declarations. lcl_startdate DATE; lcl_enddate DATE; lcl_relativedate DATE; -- Common Proc lcl_rounding_flg VARCHAR2(1); lcl_rel_date DATE; lcl_precision1 NUMBER; lcl_precision2 NUMBER; lcl_rel_dt NUMBER; -- Common Proc. lcl_format_mktv NUMBER; -- Common Proc. lcl_pf_mktv NUMBER; lcl_pf_ror NUMBER; lcl_ben_tf_ror NUMBER; lcl_ben_nm VARCHAR2(100); lcl_inmt_id_cmp VARCHAR2(25); lcl_rec_count NUMBER; lcl_det_row_no NUMBER; lcl_ctry_ky NUMBER; lcl_act_inmtid_old VARCHAR2(25); lcl_benror_old NUMBER; lcl_benmth_old NUMBER; incep_cnt NUMBER; lcl_tp_diff NUMBER; i NUMBER; z NUMBER; pf_rec_cnt NUMBER; ben_rec_cnt NUMBER; rf_rec_cnt NUMBER; cur_rec_cnt NUMBER; tf_rec_cnt NUMBER; ctry_rec_cnt NUMBER; car_adjfac NUMBER; BEGIN --Generate a New Sequence for Execution SELECT seq_exec_seq_no.NEXTVAL INTO exec_seq FROM dual; --Calling Date Range to update INT_REP_DIM_COL_DET Pkg_Ca_Common_Procs.sp_ca_date_range (temp_id, 'D', 'COM', exec_seq); --Calling Common_proc to get values Pkg_Ca_Common_Procs.sp_ca_common_proc (temp_id, lcl_precision1, lcl_precision2, lcl_rounding_flg, lcl_rel_dt, 'D', lcl_format_mktv, lcl_relativedate, lcl_buid, exec_seq); BEGIN SELECT column_begin_range_dt, column_end_range_dt, relative_dt INTO lcl_startdate, lcl_enddate, lcl_rel_date FROM INT_REP_TEMPLATE_COL_DET WHERE template_id = temp_id AND execution_sequence_no = exec_seq AND lookup_report_column_type_id IN ('CRORTYP', 'ARORTYP', 'CUSTDATE') AND status_in = 'I'; SELECT date_ky INTO lcl_startdateky FROM CALENDAR_DATE WHERE calendar_dt = lcl_startdate; SELECT date_ky INTO lcl_enddateky FROM CALENDAR_DATE WHERE calendar_dt = lcl_enddate; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR (-20017, 'Unable to get the date details'); END; lcl_det_row_no := 0; FOR cursp IN SelectPortfolio LOOP -- Composite Select Cursor Starts -- Initialization of arrays. lcl_tf_mth_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_tf_ror_tab := Pkg_Ca_Common_Procs.ror_table(); lcl_bentf_ror_tab := Pkg_Ca_Common_Procs.ror_table(); lcl_tf_mktv_tab := Pkg_Ca_Common_Procs.mktv_table(); lcl_pf_mth_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_pf_ror_tab := Pkg_Ca_Common_Procs.ror_table(); lcl_pf_mktv_tab := Pkg_Ca_Common_Procs.mktv_table(); lcl_ctry_ky_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_inmt_id_tab := Pkg_Ca_Common_Procs.names_table(); lcl_act_pinid_tab := Pkg_Ca_Common_Procs.names_table(); lcl_ben_mth_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_ben_ror_tab := Pkg_Ca_Common_Procs.ror_table(); lcl_bwgt_tab := Pkg_Ca_Common_Procs.mktv_table(); lcl_binmt_id_tab := Pkg_Ca_Common_Procs.names_table(); lcl_act_binid_tab := Pkg_Ca_Common_Procs.names_table(); lcl_bctry_ky_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_rf_mth_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_rfctry_ky_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_rf_ror_tab := Pkg_Ca_Common_Procs.ror_table (); lcl_cur_ctyky_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_cur_mth_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_cur_inmt_tab := Pkg_Ca_Common_Procs.names_table(); lcl_cur_nm_tab := Pkg_Ca_Common_Procs.names_table(); lcl_cur_id_tab := Pkg_Ca_Common_Procs.names_table(); lcl_cty_mth_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_con_ctyky_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_con_ctynm_tab := Pkg_Ca_Common_Procs.names_table(); lcl_con_intid_tab := Pkg_Ca_Common_Procs.names_table(); lcl_act_intid_tab := Pkg_Ca_Common_Procs.names_table(); lcl_con_intnm_tab := Pkg_Ca_Common_Procs.names_table(); lcl_pf_ror := NULL; lcl_inmt_id_cmp := NULL; lcl_ctry_ky := NULL; lcl_tp_diff := 0; BEGIN SELECT COUNT(1) INTO lcl_rec_count FROM DAILY_COMPOSITE_RETURNS dcr WHERE dcr.bus_ut_ky = cursp.bu_ky AND dcr.composite_ky = cursp.comp_ky AND dcr.date_ky > lcl_startdateky AND dcr.date_ky <= lcl_enddateky AND dcr.region_ky = 0 AND dcr.industry_hierarchy_level_ky = 0 AND dcr.invest_mgt_firm_ky = 0 AND dcr.capital_size_ky = 0 AND dcr.return_method_ky = 0; EXCEPTION WHEN NO_DATA_FOUND THEN lcl_rec_count := 0; dbms_output.put_line ('No data found for Composite'); END; IF lcl_rec_count >= 1 THEN -- IF for availability of data. lcl_compid := cursp.comp_id; lcl_comp_opendt_ky := cursp.comp_open_dt ; -- Query to get Composite open date for Since Inception time period. SELECT COUNT(1) INTO incep_cnt FROM INT_REP_TEMPLATE_COL_DET WHERE template_id = temp_id AND lookup_report_column_id = 'INCEP' AND lookup_report_column_type_id = 'CRORTYP' AND execution_sequence_no = 0; IF incep_cnt = 1 THEN BEGIN SELECT cd.date_ky INTO lcl_startdateky FROM COMPOSITE comp, CALENDAR_DATE cd WHERE comp.composite_id = lcl_compid AND comp.bus_ut_id = lcl_buid AND cd.calendar_dt = comp.composite_open_dt AND comp.current_rec_in = 'Y' AND comp.composite_status_in = 'A'; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; END IF; lcl_tp_diff := lcl_enddateky - lcl_startdateky; -- Query to get Primary currency_ky of the selected Composite. BEGIN SELECT ccy.currency_ky, ccy.currency_id, ccy.currency_nm INTO lcl_comp_curr_ky, lcl_comp_curr_id, lcl_comp_curr_nm FROM INT_COMP_CURRENCY_DET iccd, CURRENCY ccy WHERE iccd.composite_id = cursp.comp_id AND iccd.business_unit_id = lcl_buid AND iccd.currency_id = ccy.currency_id AND iccd.lookup_code_currency_id = 'PRIMRY' AND iccd.lookup_code_currency_ty = 'CCYTYP' AND iccd.current_rec_in = 'Y' AND iccd.status_in = 'A'; EXCEPTION WHEN NO_DATA_FOUND THEN SELECT ccy.currency_ky, ccy.currency_id, ccy.currency_nm INTO lcl_comp_curr_ky, lcl_comp_curr_id, lcl_comp_curr_nm FROM INT_BUS_UT_CURRENCY_DET ibucd, CURRENCY ccy WHERE business_unit_id = lcl_buid AND ibucd.currency_id = ccy.currency_id AND ibucd.lookup_code_currency_id = 'PRIMRY' AND ibucd.lookup_code_currency_ty = 'CCYTYP' AND ibucd.current_rec_in = 'Y' AND ibucd.status_in = 'A'; END; i := 0; lcl_pf_ror := 1; lcl_pf_mktv := 0; FOR curtf IN cur_totalfund LOOP i := i + 1; lcl_tf_mth_tab.extend; lcl_tf_mth_tab(i).KEY := curtf.tot_dt_ky; lcl_tf_mktv_tab.extend; lcl_tf_mktv_tab(i).market_value := curtf.tot_beg_mktv; lcl_tf_ror_tab.extend; lcl_tf_ror_tab(i).rate_of_returns_pt := curtf.tot_ror; lcl_pf_ror := lcl_pf_ror * ((curtf.tot_ror / 100) + 1); lcl_pf_mktv := lcl_pf_mktv + curtf.tot_beg_mktv; END LOOP; lcl_pf_ror := (lcl_pf_ror - 1) * 100; IF lcl_tp_diff > 0 THEN lcl_pf_mktv := lcl_pf_mktv / lcl_tp_diff; END IF; tf_rec_cnt := i; lcl_ben_tf_ror := 1; lcl_ben_nm := NULL; i := 0; FOR bentf IN cur_CBEND_tf LOOP i := i + 1; lcl_bentf_ror_tab.extend; lcl_bentf_ror_tab(i).rate_of_returns_pt := bentf.cben_ror; lcl_ben_nm := bentf.ben_nm; lcl_ben_tf_ror := lcl_ben_tf_ror * ((bentf.cben_ror / 100) + 1); END LOOP; lcl_ben_tf_ror := (lcl_ben_tf_ror - 1) * 100; BEGIN IF lcl_ben_nm IS NULL THEN SELECT ben_nm INTO lcl_ben_nm FROM (SELECT ben.benchmark_nm ben_nm FROM INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben, BENCHMARK_COMPOSITE_ASSOC bca, COMPOSITE comp, CODE_TYPE ct WHERE bca.benchmark_ky = ben.benchmark_ky AND ben.bus_ut_id = lcl_buid AND bca.composite_ky = comp.composite_ky AND bca.benchmark_type_ky = ct.code_type_ky AND ct.code_type_id = 'PRIMARY' AND comp.composite_id = cursp.comp_id AND irtd.template_id = temp_id AND irtd.report_entity_id = 'CMPBEN' AND irtd.report_item_id = 'PBMK' UNION SELECT ben.benchmark_nm ben_nm FROM INT_REPORT_TEMPLATE_DET irtd, BENCHMARK ben WHERE irtd.template_id = temp_id AND ben.benchmark_id = irtd.report_item_id AND ben.bus_ut_id = lcl_buid AND irtd.report_entity_id = 'CMPBEN' UNION SELECT IND.index_nm ben_nm FROM INT_REPORT_TEMPLATE_DET irtd, INDICES IND WHERE irtd.template_id = temp_id AND IND.index_id = irtd.report_item_id AND irtd.report_entity_id = 'CMPBEN'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN lcl_ben_nm := NULL; END; -- Calculation of Attribution Effect Adjustment Factor: IF i < tf_rec_cnt THEN FOR a IN 1 .. tf_rec_cnt - i LOOP i := i + 1; lcl_bentf_ror_tab.extend; lcl_bentf_ror_tab(i).rate_of_returns_pt := 0; END LOOP; END IF; car_adjfac := 0; IF tf_rec_cnt > 0 THEN Pkg_Ca_Common_Procs.sp_car_adjfac (lcl_pf_ror, lcl_ben_tf_ror, tf_rec_cnt, lcl_tf_ror_tab, lcl_bentf_ror_tab, lcl_mth_cadj_tab, car_adjfac); END IF; -- End calculation for Attribution Effect Adjustment Factor: i := 0; FOR curmc IN main_cur LOOP --Main Cursor Starts i := i + 1; lcl_pf_mth_tab.extend; lcl_pf_mth_tab(i).KEY := curmc.dt_ky; lcl_pf_ror_tab.extend; lcl_pf_ror_tab(i).rate_of_returns_pt := curmc.ror; lcl_pf_mktv_tab.extend; lcl_pf_mktv_tab(i).market_value := curmc.beg_mktv; lcl_ctry_ky_tab.extend; lcl_ctry_ky_tab(i).KEY := curmc.ctry_ky; lcl_inmt_id_tab.extend; lcl_inmt_id_tab(i).name := curmc.inmt_id; lcl_act_pinid_tab.extend; lcl_act_pinid_tab(i).name := curmc.comp_inmtid; END LOOP; pf_rec_cnt := i; lcl_ctry_ky := NULL; lcl_inmt_id_cmp := NULL; lcl_benmth_old := NULL; i := 0; z := 0; -- Benchmark cursor opening. FOR bencur IN cur_CBEND_Det LOOP FOR cnt IN 1 .. tf_rec_cnt LOOP tf_mth_tab := lcl_tf_mth_tab(cnt); IF (tf_mth_tab.KEY = lcl_benmth_old) THEN i := i + 1; lcl_ben_mth_tab.extend; lcl_ben_mth_tab(i).KEY := lcl_benmth_old; lcl_ben_ror_tab.extend; lcl_ben_ror_tab(i).rate_of_returns_pt := lcl_benror_old; lcl_bwgt_tab.extend; IF (lcl_benmth_old <> bencur.dt_ky) THEN lcl_bwgt_tab(i).market_value := bencur.wgt_fc; ELSE lcl_bwgt_tab(i).market_value := 0; END IF; lcl_binmt_id_tab.extend; lcl_binmt_id_tab(i).name := lcl_inmt_id_cmp; lcl_act_binid_tab.extend; lcl_act_binid_tab(i).name := lcl_act_inmtid_old; lcl_bctry_ky_tab.extend; lcl_bctry_ky_tab(i).KEY := lcl_ctry_ky; END IF; END LOOP; lcl_benror_old := bencur.cben_ror; lcl_benmth_old := bencur.dt_ky; lcl_inmt_id_cmp := bencur.inmt_id; lcl_act_inmtid_old := bencur.comp_inmtid; lcl_ctry_ky := bencur.ctry_ky; END LOOP; ben_rec_cnt := i; -- To get the consolidated list of countries. lcl_con_ctyky_tab := Pkg_Ca_Common_Procs.keys_table(); lcl_con_ctynm_tab := Pkg_Ca_Common_Procs.names_table(); lcl_con_intid_tab := Pkg_Ca_Common_Procs.names_table(); i := 0; FOR ctrycur IN cur_country_list LOOP i := i + 1; lcl_cty_mth_tab.extend; lcl_cty_mth_tab(i).KEY := ctrycur.dt_ky; lcl_con_ctyky_tab.extend; lcl_con_ctyky_tab(i).KEY := ctrycur.ctry_ky; lcl_con_ctynm_tab.extend; lcl_con_ctynm_tab(i).name := ctrycur.ctry_nm; lcl_con_intid_tab.extend; lcl_con_intid_tab(i).name := ctrycur.inmt_id; lcl_act_intid_tab.extend; lcl_act_intid_tab(i).name := ctrycur.comp_inmtid; lcl_con_intnm_tab.extend; lcl_con_intnm_tab(i).name := ctrycur.inmt_nm; END LOOP; i := i + 1; lcl_cty_mth_tab.extend; lcl_cty_mth_tab(i).KEY := 99999.99; lcl_con_ctyky_tab.extend; lcl_con_ctyky_tab(i).KEY := 99999.99; lcl_con_ctynm_tab.extend; lcl_con_ctynm_tab(i).name := 'ZZZZZ'; lcl_con_intid_tab.extend; lcl_con_intid_tab(i).name := 'ZZZZZ'; lcl_act_intid_tab.extend; lcl_act_intid_tab(i).name := 'ZZZZZ'; lcl_con_intnm_tab.extend; lcl_con_intnm_tab(i).name := NULL; ctry_rec_cnt := i; lcl_ctry_ky := NULL; i := 0; -- Risk free cursor opening. FOR rfcur IN cur_rf_returns LOOP i := i + 1; lcl_rf_mth_tab.extend; lcl_rf_mth_tab(i).KEY := rfcur.dt_ky; lcl_rfctry_ky_tab.extend; lcl_rfctry_ky_tab(i).KEY := rfcur.ctry_ky; lcl_rf_ror_tab.extend; lcl_rf_ror_tab(i).rate_of_returns_pt := rfcur.rf_ror; END LOOP; rf_rec_cnt := i; i := 0; FOR curcty IN cur_currency_ctry LOOP i := i + 1; lcl_cur_ctyky_tab.extend; lcl_cur_ctyky_tab(i).KEY := curcty.ctry_ky; lcl_cur_mth_tab.extend; lcl_cur_mth_tab(i).KEY := curcty.dt_ky; lcl_cur_inmt_tab.extend; lcl_cur_inmt_tab(i).name := curcty.inmt_id; lcl_cur_nm_tab.extend; lcl_cur_nm_tab(i).name := curcty.cur_nm; lcl_cur_id_tab.extend; lcl_cur_id_tab(i).name := curcty.cur_id; END LOOP; i := i + 1; lcl_cur_ctyky_tab.extend; lcl_cur_ctyky_tab(i).KEY := 99999.99; lcl_cur_mth_tab.extend; lcl_cur_mth_tab(i).KEY := 99999.99; lcl_cur_inmt_tab.extend; lcl_cur_inmt_tab(i).name := 'ZZZZZ'; lcl_cur_nm_tab.extend; lcl_cur_nm_tab(i).name := 'ZZZZZ'; lcl_cur_id_tab.extend; lcl_cur_id_tab(i).name := 'ZZZZZ'; cur_rec_cnt := i; -- Call for sp_ca_calculations proc. BEGIN Pkg_Ca_Common_Procs.sp_ca_calculations (temp_id, exec_seq, lcl_precision1, lcl_rounding_flg, lcl_pf_ror, lcl_ben_tf_ror, lcl_mth_cadj_tab, lcl_ben_nm, lcl_startdateky,lcl_enddateky, user_id, cursp.comp_id, cursp.comp_nm, lcl_rel_date, lcl_tf_mktv_tab,lcl_pf_ror_tab, lcl_pf_mktv_tab, lcl_ctry_ky_tab, lcl_inmt_id_tab, lcl_ben_ror_tab,lcl_bwgt_tab, lcl_binmt_id_tab, lcl_bctry_ky_tab, lcl_rfctry_ky_tab, lcl_rf_ror_tab, lcl_cur_ctyky_tab, lcl_cur_nm_tab, lcl_cur_id_tab, lcl_con_ctyky_tab, lcl_con_ctynm_tab, lcl_con_intid_tab, lcl_con_intnm_tab, lcl_tf_mth_tab, lcl_pf_mth_tab, lcl_ben_mth_tab, lcl_rf_mth_tab, lcl_cty_mth_tab, pf_rec_cnt, ben_rec_cnt, rf_rec_cnt, cur_rec_cnt, ctry_rec_cnt, tf_rec_cnt, lcl_comp_curr_ky, lcl_det_row_no, car_adjfac,lcl_act_pinid_tab, lcl_act_binid_tab, lcl_act_intid_tab, lcl_cur_mth_tab, lcl_cur_inmt_tab, lcl_tf_ror_tab, lcl_bentf_ror_tab, lcl_comp_curr_id, 'D'); EXCEPTION WHEN SUBSCRIPT_BEYOND_COUNT THEN NULL; END; END IF; -- END IF for availability of data. COMMIT; END LOOP; --Composite Select Cursor Ends EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('No Data : ' || exec_seq); exec_seq := -1; WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE ('Other Errors : ' ||SQLCODE); exec_seq := -1; err_No := SQLCODE; END sp_ca_comp_dly;