Linked Questions

Popular Questions

Error: Parameter number 7 is not an OUT parameter

Asked by At

I have a problem with my java client calling the stored procedure, this is the code of the call:

try {   
    Connection conn = ConnectionFactory.getConnection();
    CallableStatement cs = conn.prepareCall("{call inserisci_corso(?,?,?,?,?,?,?)}");
    cs.setString(1, nomeCorso);
    cs.setInt(2, minPart);
    cs.setInt(3, maxPart);
    cs.setDate(4, dataInizioCorso);
    cs.setInt(5, idVasca);
    cs.setBigDecimal(6, prezzo);
    cs.registerOutParameter(7, Types.INTEGER);                
    cs.executeQuery(); //Eseguo chiamata
    idCorso = cs.getInt(7);
} catch (SQLException e) { //Gestione errore
    throw new DAOException("Errore nell'aggiunta del corso: " + e.getMessage());

This is the code of the stored procedure on mySQL Workbench:

CREATE PROCEDURE `inserisci_corso` (in var_nomeCorso VARCHAR(45), in var_minPartecipanti INT, in var_maxPartecipanti INT, in var_dataInizioCorso DATE, in var_idVasca INT, in var_costo DECIMAL, out var_codiceCorso INT)
    declare exit handler for sqlexception
    if var_maxPartecipanti < var_minPartecipanti then
        signal sqlstate '45000' set message_text = 'Il numero minimo di partecipanti deve essere inferiore al numero massimo di partecipanti';
    elseif var_dataInizioCorso < current_date() then
        signal sqlstate '45000' set message_text = 'La data di inizio corso non può essere antecedente alla data odierna';
    end if;
    set transaction isolation level repeatable read;
    start transaction;
        insert into `Corso`(`Nome`, `MinPartecipanti`,`MaxPartecipanti`,`DataInizioCorso`,`Vasca_IdVasca`,`Costo`)
        values(var_nomeCorso,var_minPartecipanti,var_maxPartecipanti,var_dataInizioCorso,var_idVasca, var_costo);
        set var_codiceCorso = last_insert_id();

I tried to write the call like: mydb.inserisci_corso but it does not work

Related Questions