sql >> Base de Datos >  >> RDS >> Mysql

No se puede recuperar el valor que deseaba seleccionar mediante el procedimiento almacenado

Si desea el valor que se devuelve a través de un parámetro OUT de un procedimiento almacenado, entonces no usa un ResultSet, usa el parámetro CallableStatement asociado con el parámetro OUT del procedimiento almacenado. Por ejemplo, para la tabla de prueba

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

que contiene los datos de muestra

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

y el procedimiento almacenado

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

luego el siguiente código Java

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);
}

impresiones

another_section