Как бросить SQLException в хранимой процедуре
Как я могу исключить исключение в хранимой процедуре
Например:
@temp int =0
As
BEGIN
SELECT @int = COUNT(*) FROM TABLE1
END
IF(@temp>0)
throw SQL Exception
P/S: не использовать возвращаемое значение
Ответы
Ответ 1
RAISERROR для сервера MSSQL. Как @Marc Gravell: обратите внимание, что для него должно быть >= 16, чтобы оно выглядело как исключение SqlException.
Прочитайте этот SO ответ для MySql.
Этот сообщение в блоге также показывает, как это сделать в MySQl (если <= 6.0)
Ответ 2
В MySQL нет способа выбросить исключение в хранимую процедуру, но вы можете принудительно вызвать ошибку, выбрав из несуществующей таблицы.
Это помогает, если имя_таблицы дает описание ошибки.
Пример:
DELIMITER $$
CREATE PROCEDURE throw_exception (IN param1 INTEGER)
BEGIN
DECLARE testvar INTEGER;
SELECT testfield INTO testvar FROM atable WHERE id = param1 LIMIT 1;
IF testfield IS NULL THEN
/*throw the error here*/
SELECT * FROM
error_testfield_in_atable_not_found_youve_entred_a_nonexisting_id_in_throw_exception;
END IF;
END $$
DELIMITER ;