sql >> Databáze >  >> RDS >> Mysql

Nelze načíst hodnotu, kterou jsem chtěl vybrat pomocí uložené procedury

Pokud chcete hodnotu, která je vrácena prostřednictvím parametru OUT uložené procedury, pak nepoužijete ResultSet, použijete parametr CallableStatement spojený s parametrem OUT uložené procedury. Například pro testovací tabulku

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

obsahující ukázková data

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

a uložená procedura

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

pak následující kód 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);
}

tiskne

another_section


  1. 10 užitečných zdrojů pro ty, kteří se chtějí dozvědět více o SQL

  2. Jak nainstalovat, zabezpečit a vyladit výkon databázového serveru MariaDB

  3. Zobrazení dat z MYSQL; Chyba příkazu SQL

  4. SQL počítání všech řádků namísto počítání jednotlivých řádků