Fråga : ORA-felet-för många värderar


När jag testar för fel, jag ser att problemet var med det omgående meddelandet för utförande.  Bordlägga, var markören väljer datan från, är ett tillfälligt bordlägger tillgängligt för den period.


TILLVÄGAGÅNGSSÄTTET PROGRAMASSIGNMENT_CONV (P_CLIENTID NUMRERAR IN), ÄR

    TYP PROGRAMASSIGNMENT_TAB ÄR BORDLÄGGER AV PROGRAMASSIGNMENT%ROWTYPE-INDEX VID SIMPLE_INTEGER;
    L_PROGRAMASSIGNMENT PROGRAMASSIGNMENT_TAB;
   -- L_PROGRAMASSIGNMENTID PROGRAMASSIGNMENT.PROGRAMASSIGNMENTID%TYPE;
    L_LIMIT PLS_INTEGER: = 500000;

    MARKÖREN CUR_PROGRAMASSIGNMENT ÄR
      VÄLJ PROGRAMASSIGNMENTID_SEQ.NEXTVAL,
             A.CLIENTID,
             A.VENDORID,
             A.PID,
             A.SUBPID,
             A.PROGRAMID,
             A.TRIAGEFILTERID,
             A.CASEID,
             A.CLIENTCASENO,
             A.WORKFLOWSTATUS,
             A.APPLICATIONID,
             A.ISPRIMARYIND,
             A.STATUSCHANGEREASONID,
             A.INTERVENTIONLEVELID,
             A.DMINTERVENTIONTYPEID,
             A.PROGRAMRANK,
             A.IDENTIFIEDDATE,
             A.SELECTEDDATE,
             A.OPENEDDATE,
             A.CLOSEDDATE,
             A.DECLINEDDATE,
             A.INTAKEDATE,
             A.INTAKESOURCEID,
             A.REFERRALID,
             A.INSERTEDBY,
             sysdate,
             A.RUNID
        FRÅN CDRLOAD.GTEMP_BSC_PROGRAMASSIGNMENT A;

   l_clientname VARCHAR2 (100);

  BÖRJA
    -- befolka cdrload.gtemp_bsc_programassignment från sql-serveren till och med DBLINK

    l_clientname: = getclientname (p_clientid, ”CDR_PROGRAMASSIGNMENT_CONV”);


    UTFÖR DET OMGÅENDE ”MELLANLÄGGET IN I cdrload.gtemp_bsc_programassignment som ÄR VALD * FRÅN”, || l_clientname;



    VÄLJ A.RUNID
      IN I L_RUNID
      FRÅN CDRLOAD.GTEMP_BSC_PROGRAMASSIGNMENT A
     VAR ROWNUM = 1;

    ÖPPNA CUR_PROGRAMASSIGNMENT;
    KRETSA
      HÄMTA CUR_PROGRAMASSIGNMENT-I STORA PARTIER MOT EFTERKRAV
        IN I L_PROGRAMASSIGNMENT BEGRÄNSA L_LIMIT;
      RUNIDTRACKING_PKG.STATUS_TRACKING (P_CLIENTID,
                                        ”conversion_pkg.CDR_PROGRAMASSIGNMENT_CONV”,
                                        ”För i stora partier räkning mot efterkrav för MELLANLÄGG”,
                                        L_PROGRAMASSIGNMENT.COUNT,
                                        L_RUNID);


      -- mellanlägget in i programassignment bordlägger

      FORALL I I 1. L_PROGRAMASSIGNMENT.COUNT
        MELLANLÄGGET IN I PROGRAMASSIGNMENT VÄRDERAR L_PROGRAMASSIGNMENT (I);
      GÅ UT NÄR CUR_PROGRAMASSIGNMENT%NOTFOUND;
    AVSLUTA KRETSAR;
    NÄRA CUR_PROGRAMASSIGNMENT;
  UNDANTAG
    NÄR ANDRA DÄREFTER
      RUNIDTRACKING_PKG.STATUS_TRACKING (P_CLIENTID,
                                        ”conversion_pkg.CDR_PROGRAMASSIGNMENT_CONV”,
                                        SQLERRM,
                                        0,
                                        L_RUNID);
  AVSLUTA PROGRAMASSIGNMENT_CONV;

Svar : ORA-felet-för många värderar

Du behöver att använda din kolonn namnger.

Jag vet inte att dina bordlägger strukturerar.  Du behöver att få kolonnen namnger från gtemp_bsc_programassignment och CDR_PROGRAMASSIGNMENT_CONV och sätter dem in tydligt in i mellanläggsmeddelandet:

MELLANLÄGG IN I cdrload.gtemp_bsc_programassignment (----SÄTT IN DIN COLUN NAMNGER HÄR-----)
VÄLJ (----SÄTT IN DIN COLUN NAMNGER HÄR-----) FRÅN IngersollRand.CDR_PROGRAMASSIGNMENT_CONV@INGEST;
Andra lösningar  
 
programming4us programming4us