Mysql
 sql >> Database >  >> RDS >> Mysql

Impossibile recuperare il valore che desideravo selezionare tramite Stored Procedure

Se si desidera il valore restituito tramite un parametro OUT di una stored procedure, non si utilizza un ResultSet, si utilizza il parametro CallableStatement associato al parametro OUT della stored procedure. Ad esempio, per la tabella di prova

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

contenente i dati di esempio

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

e la procedura memorizzata

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

quindi il seguente codice 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);
}

stampe

another_section