Ciao a tutti!
Vi posto una stored functions, tanto per parlare di qualcosa di concreto:
/** INSERT A VALUE INTO THE HEAP **/
DROP FUNCTION IF EXISTS `insertValueToHeap` $$
CREATE FUNCTION `insertValueToHeap` (_name VARCHAR(255), _value VARCHAR(255)) RETURNS INT DETERMINISTIC
BEGIN
DECLARE retval INT DEFAULT 1;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET retval = 0;
DELETE FROM heapSpace WHERE the_name = _name;
INSERT INTO heapSpace SET the_name = _name, the_value = _value;
RETURN retval;
END $$
L'idea è molto semplice: voglio tentare l'inserimento di un valore all'interno di una tabella che, però, essendo TEMPORARY potrebbe non esistere!
Creo CONTINUE HANDLER per catturare l'errore 1146 di MySQL (SQLSTATE è '4S...' e non mi ricordo il resto... ) e mi aspetto che, se tutto fila liscio, in uscita retval dovrebbe avere valore di default, ovvero, 1. In caso di rogne, dovrebbe essere settato a zero.
Ho provato, per disperazione, ad aggiungere anche gli HANDLER SQLWARNING e NOT FOUND: ma non succede niente !
Se eseguo un semplicissimo - SELECT insertValueToHeap('bingo','bongo')- continuo ad ottenere il mio dannato errore per la tabella che non esiste (a ragione!!!).
Io ma non ci stò capendo niente!.