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 -> Trigger problem

Trigger problem

From: Alen Cappelletti <cocker_at_libero.it>
Date: 6 Jun 2005 08:01:22 -0700
Message-ID: <1118067598.587336.112010@g44g2000cwa.googlegroups.com>


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

Original text of this message

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