Se non erro, MySql non consente di ritornare risultati diversi da una query nelle stored procedure. Puoi però aggirare il problema creandoti una tabella temporanea che viene popolata nel ramo ELSE da un record che contiene l'errore, al termine del ramo ELSE lanci una SELECT che ti elenca l'errore.Originariamente inviato da Skywalker87
Ciao!
Le procedure di MySQL consentono di restituire un messaggio d'errore?
Mi spiego meglio esemplificando, data la seguente procedura:
Se la procedura entrasse nella clausola ELSE del costrutto condizionale, cioè se il valore della variabile NumeroPreferenze fosse maggiore o uguale a 3, vorrei che venisse restituito un errore (possibilmente standard MySQL) del tipo “impossibile inserire la tupla”. In pratica devo aggiungere un vincolo sulla tabella per sopperire al mancato supporto da parte di MySQL dell'istruzione CHECK di SQL.codice:DROP PROCEDURE InserisciPreferenza; DELIMITER // CREATE PROCEDURE InserisciPreferenza(IN Pizza SMALLINT, IN Utente VARCHAR(50)) BEGIN DECLARE NumeroPreferenze SMALLINT; SELECT COUNT(*) INTO NumeroPreferenze FROM ElencoPreferenze E WHERE E.Utente = Utente; IF NumeroPreferenze < 3 THEN INSERT INTO Preferenza VALUES (Pizza, Utente); ELSE … END IF; END; // DELIMITER ;
Grazie mille!
ad esempio:
CREATE TEMPORARY TABLE lista_errore (descrizione varchar(200))
INSERT INTO lista_errore VALUES('Impossibile inserire la tupla')

Rispondi quotando