Hi experts,
I am facing issue while solving a numeric overflow error. after analyzing we came to know that in the below code BINARY_INTEGER is causing the issue as input is exceeding its range. I tried to replace BINARY_INTEGER by varchar2(20) but its saying
"Error(580,20): PLS-00657: Implementation restriction: bulk SQL with associative arrays with VARCHAR2 key is not supported."
We need to remove this binary_integer. I dont know how to do this. Can anybody give some idea or what code change required here ? thanks in advance. Cheers.. Below is the code,
===================================================
PROCEDURE UpdateCost_
(
p_Cost_typ IN OUT NOCOPY CM_t,
)
IS
TYPE ObjektIdTab_itabt IS TABLE OF ObjektId_tabt INDEX BY BINARY_INTEGER;
v_cost_IdTab_itab ObjektIdTab_itabt;
v_CM_ID INTEGER := p_Cost_typ.costm.CM_ID;
BEGIN
SELECT CAST(MULTISET
(SELECT Costwps.CMKostId
FROM CM_Pos_r NRPos,
CMK_z_r costzpps,
CMG_Cost_v Costwps
WHERE NRPos.CM_ID = v_CM_ID
AND NRPos.SNRId_G = SNRCT.SNRPos.SNRId_G
AND costzpps.CM_ID = NRPos.CM_ID
AND costzpps.CMSNRPosId = NRPos.CMSNRPosId
AND costzpps.Kost_s = Kost.Costnzl.Kost_s
AND Costwps.CMKz_Id = costzpps.CMKz_Id
AND Costwps.TypCode NOT IN
(SELECT kw.TypCode
FROM TABLE(Kost.Kostwt_tab) kw
)
) AS ObjektId_tabt )
BULK COLLECT
INTO v_cost_IdTab_itab
FROM TABLE(p_Cost_typ.SNR_tab) SNRCT,
TABLE(SNRCT.Kost_tab) Kost
;
FOR v_i IN 1 .. v_cost_IdTab_itab.COUNT LOOP
FOR v_j IN 1 .. v_cost_IdTab_itab(v_i).COUNT LOOP
DELETE FROM CMG_Cost_v WHERE CMKostId = v_cost_IdTab_itab(v_i)(v_j);
END LOOP;
END LOOP;
END;
===================================================