J'ai une procédure stockée qui fonctionne comme prévu. L'extrait est présenté ci-dessous :
BEGIN
SET XACT_ABORT ON;
BEGIN TRANSACTION;
INSERT Table1...;
INSERT Table2...;
COMMIT TRANSACTION;
END
Si une erreur se produit dans Table2, l'insertion de Table1 est annulée. Le problème vient de l'appel Java à la procédure stockée. Le code ci-dessous ne lèvera pas d'exception si XACT_ABORT est activé ;
psmt = conn.prepareStatement(query);
psmt.setInt(1, id);
psmt.execute();
psmt.close();
Lorsque j'exécute une procédure stockée dans SQL Server Management Studio, je constate que deux messages sont renvoyés. L'un de succès, l'autre d'erreur : bien que les insertions soient annulées.
(1 row(s) affected)
Msg 515, Level 16, State 2...
Que faut-il, dans l'appel Java, pour que l'exception/erreur soit reconnue ? ...Pour lire tous les messages ?