错误:参数号 7 不是 OUT 参数

问题描述 投票:0回答:0

我的 java 客户端调用存储过程时出现问题,这是调用代码:

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());
}

这是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)
BEGIN
    declare exit handler for sqlexception
    begin
        rollback;
        resignal;
    end;
    
    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();
        commit;
        
end

我试着把电话写成这样:

mydb.inserisci_corso
但它不起作用

java mysql stored-procedures client call
© www.soinside.com 2019 - 2024. All rights reserved.