Подтвердить что ты не робот

Как бросить SQLException в хранимой процедуре

Как я могу исключить исключение в хранимой процедуре Например:

@temp int =0

As 
BEGIN
SELECT @int = COUNT(*) FROM TABLE1
END

IF(@temp>0)
throw SQL Exception

P/S: не использовать возвращаемое значение

4b9b3361

Ответ 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 ;