Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

numeric overflow error using binary integer

Subhadeep RoyJul 11 2013 — edited Jul 11 2013

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;

===================================================

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 8 2013
Added on Jul 11 2013
3 comments
1,199 views