Continuiamo la carrellata delle nuove funzionalità a livello di programmabilità di SQL Server 2012.
Parliamo della gestione delle eccezioni.
Come molti di voi sapranno, la "try.. catch" è stata introdotta con SQL Server 2005.
Diciamo che per chi è abituato a scrivere anche in .net (come il sottoscritto
) non si è trattato proprio di una grande implementazione per gestire le eccezioni a database. Certo, risolve parte dei problemi che la precedente gestione creava in termini di coding, ma di certo non è ottimale (dipende anche da quanto si vuole intervenire a database per gestioni di questo tipo, e ci sono varie scuole di pensiero a riguardo).
Al fine di arricchire il costrutto esistente è stata creata una nuova parola chiave: THROW
Essa ha la funzionalità di rilanciare l'eccezione al chiamante, un po' come si faceva con la RAISERROR, anche se vi sono alcune differenze, come indicato nella tabella di seguito:
La THROW può essere utilizzata quindi come_
- una semplice raise di un errore (simile alla RAISERROR ma senza tener conto della sys.messages, che non è poco, non ci sono dipendenze con oggetti di sistema)
- come la raise di un'eccezione gestita in un blocco CATCH (ovvero come una throw in .net)
- come la raise di un errore con customizzazione messaggio di ritorno (usando la
FORMATMESSAGE)
Stay Tuned!