Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[JAVA] Invocare Stored procedure

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[JAVA] Invocare Stored procedure

Postdi Swalke » 18/10/08 12:05

Ciao a tutti.
Ho creato una stores procedure su DB MySQL di cui posto la dichiarazione:

Codice: Seleziona tutto
CREATE PROCEDURE prova.`somma_anni`(numeroRigheDaLeggere INT, nomeDaEvitare CHAR(3), OUT sommaAnni INT)
BEGIN
    ...
END;


La procedura funziona correttamente se la lancio da MySQL, ma se la lancio dal mio metodo Java mi da errore e non capisco perchè:
Qui sotto il codice Java che altro non fa che lanciare la procedura:

Codice: Seleziona tutto
Connection connection=null;
String DbDriver = "com.mysql.jdbc.Driver";     
String DbURL = "jdbc:mysql://localhost:3306/prova?autoReconnect=true&characterEncoding=utf8";
String username = "root";
String password = "root";
      
try {
   Class.forName(DbDriver);

        connection = DriverManager.getConnection(DbURL, username, password);
   String sql = "{ ? = call somma_anni(?,?) }";
   CallableStatement cs = connection.prepareCall(sql);
   cs.setInt(2, 3);
   cs.setString(3, "xxx");

   cs.registerOutParameter(1, Types.INTEGER);
         
   cs.execute();
         
   int outParam = cs.getInt(1);

        connection.close();
         
} catch (SQLException e) {
   e.printStackTrace();
} catch (ClassNotFoundException e) {
   e.printStackTrace();
}


Quando viene eseguito cs.execute(); mi genera la seguente eccezione:
Codice: Seleziona tutto
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: FUNCTION prova.somma_anni does not exist

...ma sia il nome del db (prova) che della procedura (somma_anni) sono corretti.

Non so più a cosa pensare... :-?
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano

Sponsor
 

Re: [JAVA] Invocare Stored procedure

Postdi archimede » 19/10/08 09:06

archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [JAVA] Invocare Stored procedure

Postdi Swalke » 19/10/08 11:45

Ho modificato l'sql che uso in java per chiamare la stored procedure in questo modo
String sql = "{call somma_anni(?,?,?) }"
anzichè in questo:
String sql = "{ ? = call somma_anni(?,?) }";

ed effettvamente così funziona.
Il fatto è che su molti altri esempi che ho trovatu su web usano la sintassi { ? = call somma_anni(?,?) } quando una stored procedure ritorna un parametro.
Allora non capisco... ...quando è da usare questo tipo di sintassi?
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano


Torna a Programmazione


Topic correlati a "[JAVA] Invocare Stored procedure":

web scraping in java
Autore: templare77
Forum: Programmazione
Risposte: 1

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti