Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible de récupérer la valeur que je souhaitais sélectionner à l'aide de la procédure stockée

Si vous voulez la valeur renvoyée via un paramètre OUT d'une procédure stockée, vous n'utilisez pas de ResultSet, vous utilisez le paramètre CallableStatement associé au paramètre OUT de la procédure stockée. Par exemple, pour la table de test

CREATE TABLE `allsections_list` (
 `SECTION_ID` int(11) NOT NULL,
 `SECTION_NAME` varchar(50) DEFAULT NULL,
 PRIMARY KEY (`SECTION_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

contenant les exemples de données

SECTION_ID  SECTION_NAME
----------  ---------------
         1  one_section
         2  another_section

et la procédure stockée

CREATE PROCEDURE `getSECTION_NAME`(IN myID INT, OUT myName VARCHAR(50))
BEGIN
   SELECT SECTION_NAME INTO myName FROM allsections_list WHERE SECTION_ID = myID;
END

puis le code Java suivant

try (CallableStatement myFirstCs = conn.prepareCall("{call getSECTION_NAME(?,?)}")) {
    myFirstCs.setInt(1, 2);  // set IN parameter "myID" to value 2
    myFirstCs.registerOutParameter(2, Types.VARCHAR);
    myFirstCs.execute();
    String sectionName = myFirstCs.getString(2);  // get value from OUT parameter "myName"
    System.out.println(sectionName);
}

impressions

another_section