J'appelle un 2005 MS SQL Server procédure stockée en utilisant le MS pilote JDBC et que vous souhaitez accéder aux paramètres de sortie avant de traiter le jeu de résultats comme suit:Accès aux paramètres de sortie avant résultat de traitement défini dans SQL Server via jdbc
proc = "{call mySproc(?,?,?)}";
conn = ds.getConnection();
callableStmt = conn.prepareCall(proc);
callableStmt.setString(1,inputParam);
callableStmt.registerOutParameter(2,Types.INTEGER);
callableStmt.registerOutParameter(3,Types.INTEGER);
callableStmt.execute();
rs = (ResultSet)callableStmt.getResultSet();
output[0] = callableStmt.getInt(2); //@rc
output[1] = callableStmt.getInt(3); //@rs
if(output[0] != 0){
//do some stuff
} else {
// process result set
}
Le problème est que l'accès aux paramètres de sortie avant le traitement du jeu de résultats provoque la fermeture du jeu de résultats.
Y at-il un moyen que je puisse réaliser ceci sans modifier la procédure stockée?
Il est possible de le faire via JDBC pour d'autres bases de données. Cependant, à partir des recherches que j'ai trouvé les JDBC Spec états:
Pour une portabilité maximale, objets ResultSet et mise à jour d'un ci compte doivent être traités avant d'obtenir les valeurs des paramètres de sortie.
Est-ce que le pilote MS JDBC a été implémenté à la lettre de la loi et que d'autres pilotes JDBC ont fourni des implémentations plus flexibles? En espérant que quelqu'un puisse éclaircir ma compréhension de ce problème.