Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: Trigger problem

Re: Trigger problem

From: Barbara Boehmer <baboehme_at_hotmail.com>
Date: 6 Jun 2005 17:02:03 -0700
Message-ID: <1118100295.981195.93570@o13g2000cwo.googlegroups.com>


I can only guess that your trigger is inserting null values because your cursor is selecting null values. I would need some create table and insert statements for sample data and an insert statement that fires the trigger and results in null values, in order to test the problem.

However, I can tell you that you should not be selecting from the same table that the trigger is on, from within the trigger. Instead of selecting the maximum value and adding one, you should be using a sequence.

You can also greatly simplify your trigger. The cursors are not necessary.

Please see the suggested code below.

    SELECT INITCAP (MAX (cli.RAGSOC))      RAGSOC,
           INITCAP (MAX (cli.INDIRIZZO))   INDIRIZZO,
           MAX (cli.CAP)                   CAP,
           INITCAP (MAX (cli.CITTA))       CITTA,
           MAX (cli.PROVINCIA)             PROVINCIA,
           MAX (cli.PARTITAIVA)            PARTITAIVA,
           MAX (cli.CODSIGMA)              CODSIGMA,
           MAX (comm.DESCRIZIONE)          DESCRIZIONE,
           MAX (comm.NUMORDINECLIENTE)     NUMORDINECLIENTE,
           MAX (anacomm.FILIALE)           FILIALE,
           Trim (MAX (anacomm.NOME))
           || ' '
           || Trim(MAX(anacomm.COGNOME))   RiferimentoCommerciale,
           MAX (lis.DESATTIVITA)           DESATTIVITA,
           MAX (lis.QUANTITA)              QUANTITA,
           MAX (lis.PREZZO)                PREZZO,
           MAX (lis.QUANTITA)
           * MAX (lis.PREZ­ZO)             TotRiga,
           ((MAX (lis.QUANTITA)
             * MAX (lis.PR­EZZO))
            / 100) * 20                    IVA,
           (MAX (lis.QUANTITA)
            * MAX (lis.PRE­ZZO)
            + ((MAX (lis.QUANTITA)
                * MAX (l­is.PREZZO))
              / 100) * 20)                ImponibileConIva,
           MAX (pag.DescrizionePagamento) DescrizionePagamento,
           MAX (pag.GIORNI)               PostfatturazioneGiorni,
           MAX (pag.FINEMESE)             FineMese
    INTO   :NEW.RAGIONESOCIALE,
           :NEW.INDIRIZZO,
           :NEW.CAP,
           :NEW.CITTA,
           :NEW.PROVINCIA,
           :NEW.PIVA,
           :NEW.CODICESIGMA,
           :NEW.DESCRIZIONECOMMESSA,
           :NEW.NUMORDINECLIENTE,
           :NEW.FILIALE,
           :NEW.COMMERCIALE,
           :NEW.DESATTIVITA,
           :NEW.QUANTITA,
           :NEW.PREZZO,
           :NEW.TOTRIGALISTINO,
           :NEW.IVA,
           :NEW.IMPONIBILEPIUIVA,
           :NEW.TIPOLOGIAPAGAMENTO,
           :NEW.POSTGIORNI,
           :NEW.FINEMESE
    FROM   TABDATIFATTURAZIONE      fatt,
           TABLISTINI               lis,
           TABTESTATACOMMESSE       comm,
           TABANAGRAFICACLIENTI     cli,
           TABANAGRAFICACOMMERCIALI anacomm,
           TABTIPOPAGAMENTO         pag
    WHERE  fatt.NUMEROCOMMESSA  = TRIM (:NEW.NumeroCommessa)
    AND    fatt.PROGRIGA        = TRIM (:NEW.ProgRiga)
    AND    fatt.PROGRIGAFATTURA = TRIM (:NEW.ProgRigaFattura)
    AND    fatt.MESE            = TRIM (:NEW.Mese)
    AND    fatt.NUMEROCOMMESSA  = lis.NUMEROCOMMESSA
    AND    fatt.PROGRIGA        = lis.PROGRIGA
    AND    comm.NUMEROCOMMESSA  = lis.NUMEROCOMMESSA
    AND    comm.TIPOPAGAMENTO   = pag.PROGPAGAMENTO
    AND    comm.PROGCLIENTE     = cli.PROGCLIENTE
    AND cli.PROGCOMMERCIALE = anacomm.PROGCOMMERCIALE     GROUP BY fatt.MESE;
END;
/ Received on Mon Jun 06 2005 - 19:02:03 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US