Error 399 at line 6, column 11 different types of columns in UNION,INTERSECT, or MINUS _expression Error 0 at line 6, column 4 SQL statement ignored Error 364 at line 43, column 10 loop index variable 'ORD_REC' use is invalid Error 0 at line 43, column 7 Statement ignored Error 0 at line 0, column 0 Automatic recompile of Procedure body WRITE_VAULT_POSITIONS failed This is the procedure. PROCEDURE WRITE_VAULT_POSITIONS IS v_multifund_flag VARCHAR2(1); CURSOR ord_cur IS SELECT ord_code, ord_direction FROM orders, res_grouped_orders WHERE ord_code = rgo_ord_code AND rgo_code = (SELECT rgo_code FROM res_grouped_orders WHERE rgo_ord_code = :blk_ord.ord_code) AND nvl(rgo_cancelled,'N') <> 'Y' UNION SELECT :blk_ord.ord_code ord_code, :blk_ord.ord_direction ord_direction FROM dual; -- Cursor to fetch all order lines that have current vault holding details stored in the system -- SL 10/07/00 - changed 'vps_date = auxv_date' to 'vps_date >= auxv_date' so that vault details would -- still be copied event if the morning portfolio valuation run failed. CURSOR orl_cur(p_ord_code IN orders.ord_code%TYPE) IS SELECT DISTINCT orl_code, orl_inst_code, orl_pfo_code, vps_pfo_ref FROM order_lines, vault_positions, pfo_vault_group_view, aux_values, stp_dataload_controls WHERE orl_ord_code = p_ord_code AND vgv_pfo_code = orl_pfo_code AND vps_pfo_ref = vgv_vault_group AND sdc_pfo_vault_group = vgv_vault_group AND vps_inst_code = orl_inst_code AND vps_val_type = 'C' AND vps_date >= auxv_date AND auxv_axvt_code = 'CVAL' AND sdc_control_type = 'SCHEDULE' AND sdc_dataload_name IN ('QADCUST','VAULTPOS') AND sdc_active = 'Y'; BEGIN FOR ord_rec IN ord_cur LOOP IF ord_rec.ord_direction = 'SALE' THEN -- Delete any existing vault position data for the order BEGIN -- Delete order vault lines DELETE FROM order_vault_lines WHERE ovl_orl_code IN (SELECT orl_code FROM order_lines WHERE orl_ord_code = ord_rec.ord_code); -- Remove the calculated vault position from all of the order's lines UPDATE order_lines SET orl_vault_position = null WHERE orl_ord_code = ord_rec.ord_code; EXCEPTION WHEN OTHERS THEN null; END; FOR orl_rec IN orl_cur(ord_rec.ord_code) LOOP -- Get multifund flag - 'Y' if vault details apply to more than one portfolio SELECT decode(count(*),1,'N','Y') INTO v_multifund_flag FROM pfo_vault_group_view WHERE vgv_vault_group = orl_rec.vps_pfo_ref; -- Populate the order_vault_lines table for the order line INSERT INTO order_vault_lines (ovl_orl_code, ovl_total_holding, ovl_custody_holding, ovl_available_flag, ovl_holding_status, ovl_share_type, ovl_breakdown_flag, ovl_source) SELECT orl_rec.orl_code, vps_holding_vault, vps_custody_holding, NVL(vps_available_flag,'Y'), vps_holding_status, vps_share_type, NVL(vps_breakdown_flag,'N'), vps_source FROM vault_positions WHERE vps_pfo_ref = orl_rec.vps_pfo_ref AND vps_inst_code = orl_rec.orl_inst_code AND vps_val_type = 'C'; -- Update order line with total holdings available for dealing UPDATE order_lines SET orl_vault_position = (SELECT DECODE(NVL(MAX(ovl_breakdown_flag),'N'), 'N', NVL(MAX(ovl_total_holding),0), NVL(SUM(ovl_custody_holding),0)) FROM order_vault_lines WHERE ovl_orl_code = orl_rec.orl_code AND ovl_available_flag = 'Y'), orl_multifund_flag = v_multifund_flag WHERE orl_code = orl_rec.orl_code; END LOOP; END IF; END LOOP; EXCEPTION WHEN OTHERS THEN display_message('E','WRITE_VAULT_POSITIONS - ' || sqlerrm || '. Contact systems helpdesk quoting order code'); END;