Mysql
 sql >> база данни >  >> RDS >> Mysql

Не мога да извлека стойността, която исках да избера с помощта на запаметена процедура

Ако искате стойността, която се връща чрез параметър OUT на съхранена процедура, тогава не използвате ResultSet, използвате параметъра CallableStatement, свързан с параметъра OUT на съхранената процедура. Например за тестовата таблица

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

съдържащ примерните данни

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

и съхранената процедура

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

след това следния 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);
}

разпечатки

another_section


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неизвестна колона в „списък с полета“, когато заместителят на подготвеното изявление е в подзаявка

  2. Четене подчинен, четене-запис главна настройка

  3. Две генерирани ценности в доктрината

  4. Кога да използвате SELECT ... ЗА АКТУАЛИЗИРАНЕ?

  5. Качване на изображения в CKEditor без използване на плъгин