STORE PROCEDURE SQL

di il
2 risposte

STORE PROCEDURE SQL

Buongiorno,

STORE PROCEDURE SQL

Ho tre tabelle:
la prima tabella ha il nome file:

tabella FILE:
IDfile
nome
DATA
ESITO

la seconda tabella ha il nome dettaglio:

tabella DETTAGLIO:
IDDETTAGLIO
NOME
COGNOME
ESITO
FILE_FK

la terza tabella ha il nome pubblica:
tabella PUBBLICA
IDPUBBLICA
NOME
COGNOME

Voglio realizzare una store procedure nei seguenti modi:

la tabella FILE ha una relazione 1 a N della tabella DETTAGLIO

in pratica una volta inseriti i dati nella tabella dettaglio, con insert
nella tabella file c'è la colonna che si chiama esito, questa colonna se è ok , controllando che tutti i record sono inseriti nella tabella dettaglio cioè esito positivo fa la insert nella tabella pubblica
altrimenti nella tabella dettaglio se l'esito è negativo cioè qualche record non è stato inserito nella tabella questa colonna è ko e non fa la insert nella tabella pubblica

Nella tabella pubblica avendo il record che si chiama esito
tutti coloro che hanno avuto esito posito cioè ok fa la insert nella tabella PUBBLICA

Spero che mi sono spiegato meglio

Come si fà?

Grazie

2 Risposte

  • Re: STORE PROCEDURE SQL

    Questo è il mio codice, gentilmente me lo potete correggere?
    
    BEGIN
    	DECLARE integer VARIABLES.iddettaglioTemp;
    	DECLARE string VARIABLES.statoTemp;
    	DECLARE integer VARIABLES.codhnTemp;
    	DECLARE integer VARIABLES.partitaivacfTemp;
    	DECLARE string VARIABLES.ragionesocialeTemp;
    	DECLARE string VARIABLES.indirizzoTemp;
    	DECLARE string VARIABLES.comuneTemp;
    	DECLARE string VARIABLES.provTemp;
    	DECLARE integer VARIABLES.capTemp;
    	DECLARE double VARIABLES.latitudineTemp;
    	DECLARE double VARIABLES.longitudineTemp;
    	DECLARE string VARIABLES.regioneTemp;
    	DECLARE integer VARIABLES.telefonoTemp;
    	DECLARE integer VARIABLES.faxTemp;
    	DECLARE string VARIABLES.emailTemp;
    	DECLARE string VARIABLES.esitoTemp;
    	DECLARE integer VARIABLES.file_fkTemp;
    BEGIN
    	SELECT * FROM target.dettaglio tabellaDettaglio INNER JOIN target.file  tabellaFile ON tabellaDettaglio.file_fk = tabellaFile.idfile WHERE tabellaDettaglio.esito = VARIABLES.esitoTemp;
    BEGIN
    				IF(tabellaDettaglio.iddettaglio != IS NULL && tabellaDettaglio.stato != IS NULL && tabellaDettaglio.codhn != IS NULL && tabellaDettaglio.partitaivacf != IS NULL && tabellaDettaglio.ragionesociale != IS NULL && tabellaDettaglio.indirizzo != IS NULL && tabellaDettaglio.comune != IS NULL && tabellaDettaglio.prov != IS NULL && tabellaDettaglio.cap != IS NULL && tabellaDettaglio.latitudine != IS NULL && tabellaDettaglio.longitudine != IS NULL && tabellaDettaglio.regione != IS NULL && tabellaDettaglio.telefono != IS NULL && tabellaDettaglio.fax != IS NULL && tabellaDettaglio.email != IS NULL && tabellaDettaglio.esito != IS NULL && tabellaDettaglio.file_fk != IS NULL)
    
    			IF(VARIABLES.esitoTemp == 'OK')
    				INSERT INTO target.published tabellaPublished (tabellaPublished.idpublished, tabellaPublished.stato,tabellaPublished.codhn,tabellaPublished.partitaivacf,tabellaPublished.ragionesociale,tabellaPublished.indirizzo,tabellaPublished.comune,tabellaPublished.prov,tabellaPublished.cap,tabellaPublished.latitudine,tabellaPublished.longitudine,tabellaPublished.regione,tabellaPublished.telefono,tabellaPublished.fax,tabellaPublished.email) VALUES(VARIABLES.iddettaglioTemp,VARIABLES.statoTemp, VARIABLES.codhnTemp,VARIABLES.partitaivacfTemp,  VARIABLES.ragionesocialeTemp, VARIABLES.indirizzoTemp,  VARIABLES.comuneTemp,  VARIABLES.provTemp, VARIABLES.capTemp,  VARIABLES.latitudineTemp, VARIABLES.longitudineTemp, VARIABLES.regioneTemp, VARIABLES.telefonoTemp,VARIABLES.faxTemp,  VARIABLES.emailTemp );
    	END ELSE
    	 ERROR "tabella published esito KO, IL RECORD ha il VALORE null";
    END
    	END
    		END
    
  • Re: STORE PROCEDURE SQL

    No VARIABLES.esitoTemp == 'OK'
    si VARIABLES.esitoTemp = 'OK'

    no "!= IS NULL"
    si "IS NOT NULL"

    così al volo vedo questi errori, poi quando vado al pc vedo di capire meglio la query
Devi accedere o registrarti per scrivere nel forum
2 risposte