Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    16

    storedo procedure da java

    ciao a tutti.
    problema: ho scritto alcune stored procedure mysql, concepite più o meno così:

    codice:
    set @r = 0;
    create procedure prova( in p1 int, out @r )
    begin
      delete from tabella where index = p1;
      select row_count() into r;
    end;
    se chiamo la stored procedure dall'interfaccia mysql, posso testare il valore del parametro out <r> e capire quante righe sono state modificate.
    il problema inizia quando creo la stringa di chiamata alla stored da codice java, tipo:

    codice:
    String r="";
    String s = "call prova(12,@r");
    dopodiché eseguo uno Statement, e, nel database, tutto va come previsto; però, con questa sintassi, non trovo nulla, ovviamente, in <r> che dovrebbe rappresentarmi il risultato dell'azione.
    l'unica soluzione che mi è venuta in mente è usare un PreparedStatement del package java.sql; ma così torno al codice java, e non uso le stored procedures.
    chi mi aiuta?
    grazie.
    marco
    Marco

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    16

    trovata soluzione

    nel caso servisse a qualcuno, ho trovato la soluzione.
    è necessario usare un
    codice:
    CallableStatement
    che dovrà essere dichiarato con tutti i parametri e completato, in fase di esecuzione, fornendo proprio i parametri dichiarati.
    qua sotto un mini-esempio.
    codice:
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection(m_sdata,m_suserData,m_spass);
    CallableStatement stat =  conn.prepareCall("{ call nomeProcedura(?,?,?,?,?,?)}");
    stat.setString(1, "ParametroStringa1");
    stat.setString(2, "ParametroStringa2");
    stat.setString(3, "parametroStringa3");
    stat.setInt(4, 1); //parametro intero
    stat.setString(5, "ParametroStringa5");
    stat.registerOutParameter(6, java.sql.Types.CHAR);
    stat.executeUpdate();
    String srisu = stat.getString(6);
    da notare che la sequenza dei parametri inizia con 1; nel mio esempio, il parametro 6 è un parametro OUT, che registro rispettando la sequenza ed il progressivo di parametro; poi lo recupero.
    ciao.
    Marco :quote:
    Marco

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.