我的 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
但它不起作用