PDA

Visualizza versione completa : [MySQL] Errore di sintassi


Lorenzo3
04-09-2007, 20.34.44
CREATE PROCEDURE ModificaDVD(Azione CHAR(1), Cod INT, File CHAR(20), Prezzo FLOAT, Se CHAR(8), Sc INT, T CHAR(40))
COMMENT 'Procedura per la modifica della tabella DVD. AZIONI: "i" per aggiungere un DVD senza contenuti completi, "c" per aggiungere DVD e contenuti completi, "a" per aggiornare i contenuti, "r" per rimuovere DVD e contenuti'
CASE Azione /*Scegli cosa fare a seconda dell'azione indicata in input*/
WHEN ('i' OR 'c') THEN
BEGIN
IF (Se = 'Noleggio') THEN
INSERT INTO DVDNoleggio SET Settore = Se;
ELSE IF (Se = 'Vendita') THEN
INSERT INTO DVDVendita SET Settore = Se, PrezzoVendita = Prezzo;
ELSE SELECT 'Settore non valido.';
END IF;
IF (Azione = 'c') THEN CALL ModificaDVD('a',Cod, File,NULL,NULL,NULL,NULL);
END IF;
END;
WHEN ('a') THEN
LOAD LOCAL DATA INFILE File INTO TABLE Contenuti
FIELDS TERMINATED BY '\n', ENCLOSED BY '"'
LINES TERMINATED BY '';
ELSE SELECT 'Azione non valida';
END CASE$$

Non riesco a vedere l'errore di sintassi (1064) alla riga 13... qualcuno ci riesce?

UG0_BOSS
04-09-2007, 21.05.16
Ne azzardo una: prova a modificare la riga

IF (Azione = 'c') THEN CALL ModificaDVD('a',Cod, File,NULL,NULL,NULL,NULL);
END IF;

in

IF (Azione = 'c') THEN
CALL ModificaDVD('a',Cod, File,NULL,NULL,NULL,NULL);
END IF;

Lorenzo3
04-09-2007, 21.36.33
Niente, stesso errore, linea 14. Sulla CALL quindi... può essere che in un sistema linux, MySQL non permetta la ricorsione?

Lorenzo3
04-09-2007, 21.40.00
Niente, stesso errore, linea 14. Sulla CALL quindi... può essere che in un sistema linux, MySQL non permetta la ricorsione?

Neanche, ho provato adesso a togliere il blocco if incriminato, stessa cosa.

:mm:

Lorenzo3
05-09-2007, 17.30.19
Ci sto perdendo veramente la testa.. ma non esiste qualcosa un po più sofisticato del query browser per effettuare il debugging?

Dr_House
16-09-2007, 22.07.52
è una questione di attivazione credo.. .tu richiami una query su una procedure legata a quella stessa query

La ricorsion non credo che sia proprio consentita da MySQL Stesso...

Lorenzo3
21-09-2007, 21.40.05
Era solo un banale, banalissimo, odioso, ignomignioso, obbrobrioso, immorale, iniquo, malefico, intrinsecamente perverso, anticostituzionale... "ELSE IF" al posto di "ELSEIF" :grrr: .

Mi piacerebbe andare a cena con chi progetta certi linguaggi :bastone: