从SQL Server返回更新错误并在Java中捕获它



我正在SQL Server中编写一个存储过程来更新患者轮班记录。为此,必须验证数据库中是否存在dniPaciente。如果存在,则更新它,否则,它应该显示一条错误消息,指示未找到dniPaciente

我已经尝试了下面的方法,但是它没有为我抛出错误消息。

CREATE PROCEDURE sobreTurno(@dniDelPaciente VARCHAR(8) ,@nu evaFecha DATE,
@nuevaHoraInicio TIME,@nuevaHoraFin TIME)
AS 
BEGIN TRY  
IF EXISTS (SELECT dniPaciente FROM Turno WHERE dniPaciente=@dniDelPaciente)
UPDATE Turno
SET [fecha]=@nuevaFecha, 
[horaInicio]=@nuevaHoraInicio,
[horaFin]=@nuevaHoraFin
WHERE dniPaciente=@dniDelPaciente 
END TRY  
BEGIN CATCH  
PRINT('¡dniPaciente not found in the DATABASE!')    
END CATCH

SQL Server抛出的错误应该在Java的catch子句中显示。

try {
CallableStatement sobreTurno = conexionBBDD.getConexionBBDD().prepareCall("{call sobreTurno(?,?,?,?)}");
sobreTurno.setString(1, ventanaAsignacionSobreTurno.getDniPaciente());
sobreTurno.setDate(2, new Date(ventanaAsignacionSobreTurno.getDateChooser().getTime()));
sobreTurno.setTime(3, this.horaInicio);
sobreTurno.setTime(4, this.horaFin);

sobreTurno.execute();

} catch (Exception exeptionBBDD) {               
//here I need to show the error message thrown from SQL SERVER                
}

正确的存储过程如下

ALTER PROCEDURE sobreTurno(@dniDelPaciente VARCHAR(8) ,@nuevaFecha DATE,
@nuevaHoraInicio TIME,@nuevaHoraFin TIME)
AS  
IF EXISTS (SELECT dniPaciente FROM Turno WHERE dniPaciente=@dniDelPaciente)
UPDATE Turno
SET [fecha]=@nuevaFecha, 
[horaInicio]=@nuevaHoraInicio,
[horaFin]=@nuevaHoraFin
WHERE dniPaciente=@dniDelPaciente 
ELSE THROW 50000, '¡dniPaciente not found in the DATABASE!', 0;

最新更新