Как бросить SQLException в хранимую процедуру - PullRequest
11 голосов
/ 11 августа 2011

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

@temp int =0

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

IF(@temp>0)
throw SQL Exception

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

Ответы [ 2 ]

18 голосов
/ 11 августа 2011

RAISERROR для MSSQL Server. Что касается @Marc Gravell: обратите внимание, что уровень серьезности должен быть> = 16, чтобы он отображался как SqlException.

Прочитайте этот SO ответ для MySql.

В этом блоге также показано, как это сделать в MySQl (если <= 6.0) </p>

1 голос
/ 11 августа 2011

В 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 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...