| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Trigger problem
Hi all,
I write for a problem inserting data.
The 2° CURSOR SelezionaCampi (v_NumeroCommessa varchar2, v_ProgRiga varchar2, v_ProgRigaFattura varchar2, v_Mese Number)
insert NULL values into my Table fields?
I think something is wrong.
I hope U can help me.
Alen
CREATE OR REPLACE TRIGGER "TRG_TABTESTASTAMPAFATTURE2"
BEFORE INSERT
ON "TABTESTASTAMPAFATTURE2"
FOR EACH ROW
DECLARE
v_NumeroMax Number; v_NumeroCommessa varchar2(15); v_ProgRiga varchar2(30); v_ProgRigaFattura varchar2(30); v_Mese Number; CURSOR NumeroMax IS SELECT MAX(IDTABTESTASTAMPAFATTURA) FROM TABTESTASTAMPAFATTURE2;
CURSOR SelezionaCampi (v_NumeroCommessa varchar2, v_ProgRiga varchar2, v_ProgRigaFattura varchar2, v_Mese Number) IS
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(comm.NUMEROCOMMESSA) NUMEROCOMMESSA, MAX(anacomm.FILIALE) FILIALE, MAX(fatt.MESE) Mese, 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.PREZZO) TotRiga, ((MAX(lis.QUANTITA)*MAX(lis.PREZZO))/100)*20 IVA, (MAX(lis.QUANTITA)*MAX(lis.PREZZO)+((MAX(lis.QUANTITA)*MAX(lis.PREZZO))/100)*20) ImponibileConIva, MAX(pag.DescrizionePagamento) DescrizionePagamento, MAX(pag.GIORNI) PostfatturazioneGiorni, MAX(pag.FINEMESE) FineMese FROM TABDATIFATTURAZIONE fatt, TABLISTINI lis, TABTESTATACOMMESSE comm, TABANAGRAFICACLIENTI cli, TABANAGRAFICACOMMERCIALI anacomm, TABTIPOPAGAMENTO pag WHERE fatt.NUMEROCOMMESSA = TRIM(v_NumeroCommessa) AND fatt.PROGRIGA = TRIM(v_ProgRiga) AND fatt.PROGRIGAFATTURA = TRIM(v_ProgRigaFattura) AND fatt.MESE = TRIM(v_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; c_SelezionaCampi SelezionaCampi%ROWTYPE;
BEGIN
OPEN NumeroMax; FETCH NumeroMax INTO v_NumeroMax; IF v_NumeroMax IS NULL THEN v_NumeroMax := 1; ELSE v_NumeroMax := v_NumeroMax+1; END IF;
:NEW.IDTABTESTASTAMPAFATTURA := v_NumeroMax;
CLOSE NumeroMax; OPEN SelezionaCampi (:NEW.NUMEROCOMMESSA, :NEW.PROGRIGA, :NEW.PROGRIGAFATTURA, :NEW.MESE); FETCH SelezionaCampi INTO c_SelezionaCampi;
:NEW.RAGIONESOCIALE := c_SelezionaCampi.RAGSOC;
:NEW.INDIRIZZO := c_SelezionaCampi.INDIRIZZO;
:NEW.CAP := c_SelezionaCampi.CAP;
:NEW.CITTA := c_SelezionaCampi.CITTA;
:NEW.PROVINCIA := c_SelezionaCampi.PROVINCIA;
:NEW.PIVA := c_SelezionaCampi.PARTITAIVA;
:NEW.FILIALE := c_SelezionaCampi.FILIALE;
:NEW.COMMERCIALE := c_SelezionaCampi.RiferimentoCommerciale;
:NEW.DESCRIZIONECOMMESSA := c_SelezionaCampi.DESCRIZIONE;
:NEW.NUMORDINECLIENTE := c_SelezionaCampi.NUMORDINECLIENTE;
:NEW.CODICESIGMA := c_SelezionaCampi.CODSIGMA;
:NEW.TIPOLOGIAPAGAMENTO := c_SelezionaCampi.DescrizionePagamento;
:NEW.POSTGIORNI := c_SelezionaCampi.PostfatturazioneGiorni;
:NEW.FINEMESE := c_SelezionaCampi.FineMese;
:NEW.DESATTIVITA := c_SelezionaCampi.DESATTIVITA;
:NEW.QUANTITA := c_SelezionaCampi.QUANTITA;
:NEW.PREZZO := c_SelezionaCampi.PREZZO;
:NEW.TOTRIGALISTINO := c_SelezionaCampi.TotRiga;
:NEW.IVA := c_SelezionaCampi.IVA;
:NEW.IMPONIBILEPIUIVA := c_SelezionaCampi.ImponibileConIva;
CLOSE SelezionaCampi;
END; Received on Mon Jun 06 2005 - 10:01:22 CDT
![]() |
![]() |