Questione : Errore-troppo di ORA molti valori


Quando metto a punto, vedo che il problema era con la dichiarazione immediata di esecuzione.  La tabella da dove il cursore sta selezionando i dati a partire è una tabella provvisoria disponibile per quella sessione.


LA PROCEDURA PROGRAMASSIGNMENT_CONV (P_CLIENTID DI NUMERO) È

    IL TIPO PROGRAMASSIGNMENT_TAB È TABELLA DELL'INDICE DI PROGRAMASSIGNMENT%ROWTYPE DA SIMPLE_INTEGER;
    L_PROGRAMASSIGNMENT PROGRAMASSIGNMENT_TAB;
   -- L_PROGRAMASSIGNMENTID PROGRAMASSIGNMENT.PROGRAMASSIGNMENTID%TYPE;
    L_LIMIT PLS_INTEGER: = 500000;

    IL CURSORE CUR_PROGRAMASSIGNMENT È
      SELEZIONARE 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
        DA CDRLOAD.GTEMP_BSC_PROGRAMASSIGNMENT A;

   l_clientname VARCHAR2 (100);

  COMINCIARE
    -- popolare cdrload.gtemp_bsc_programassignment dall'assistente di sql con DBLINK

    l_clientname: = getclientname (p_clientid, “CDR_PROGRAMASSIGNMENT_CONV ");


    ESEGUIRE “l'INSERTO IMMEDIATO in cdrload.gtemp_bsc_programassignment PRESCELTO * DA„ || l_clientname;



    SELEZIONARE A.RUNID
      IN L_RUNID
      DA CDRLOAD.GTEMP_BSC_PROGRAMASSIGNMENT A
     DOVE ROWNUM = 1;

    APRIRE CUR_PROGRAMASSIGNMENT;
    CICLO
      LA MASSA DI AMPIEZZA CUR_PROGRAMASSIGNMENT SI RACCOGLIE
        NEL LIMITE L_LIMIT DI L_PROGRAMASSIGNMENT;
      RUNIDTRACKING_PKG.STATUS_TRACKING (P_CLIENTID,
                                        “conversion_pkg.CDR_PROGRAMASSIGNMENT_CONV„,
                                        “La massa raccoglie il conteggio per l'INSERTO„,
                                        L_PROGRAMASSIGNMENT.COUNT,
                                        L_RUNID);


      -- inserto nella tabella di programassignment

      FORALL I IN 1. L_PROGRAMASSIGNMENT.COUNT
        L'INSERTO IN PROGRAMASSIGNMENT STIMA L_PROGRAMASSIGNMENT (I);
      USCIRE QUANDO CUR_PROGRAMASSIGNMENT%NOTFOUND;
    CONCLUDERE IL CICLO;
    CHIUDERE CUR_PROGRAMASSIGNMENT;
  ECCEZIONE
    QUANDO ALTRI ALLORA
      RUNIDTRACKING_PKG.STATUS_TRACKING (P_CLIENTID,
                                        “conversion_pkg.CDR_PROGRAMASSIGNMENT_CONV„,
                                        SQLERRM,
                                        0,
                                        L_RUNID);
  ESTREMITÀ PROGRAMASSIGNMENT_CONV;

Risposta : Errore-troppo di ORA molti valori

Dovete usare i vostri nomi di colonna.

Non conosco le vostre strutture della tabella.  Dovete ottenere i nomi di colonna dal gtemp_bsc_programassignment e da CDR_PROGRAMASSIGNMENT_CONV ed inserirli esplicitamente nella dichiarazione dell'inserto:

INSERTO in cdrload.gtemp_bsc_programassignment (----INSERIRE I VOSTRI NOMI DI COLUN QUI-----)
SELEZIONARE (----INSERIRE I VOSTRI NOMI DI COLUN QUI-----) da IngersollRand.CDR_PROGRAMASSIGNMENT_CONV@INGEST;
Altre soluzioni  
 
programming4us programming4us