Я хочу сбросить то же исключение на сервере SQL, которое произошло в моем блоке try.
Я могу выдать то же сообщение, но хочу выдать ту же ошибку.
BEGIN TRANSACTION
BEGIN TRY
INSERT INTO Tags.tblDomain
(DomainName, SubDomainId, DomainCode, Description)
VALUES(@DomainName, @SubDomainId, @DomainCode, @Description)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
declare @severity int;
declare @state int;
select @severity=error_severity(), @state=error_state();
RAISERROR(@@Error,@ErrorSeverity,@state);
ROLLBACK TRANSACTION
END CATCH
RAISERROR(@@Error, @ErrorSeverity, @state);
Эта строка покажет ошибку, но я хочу что-то подобное.
Это вызывает ошибку с ошибкой 50000, но я хочу, чтобы был выдан номер ошибки, который я передаю @@error
,
Я хочу зафиксировать эту ошибку нет на веб-интерфейсе
т.е.
catch (SqlException ex)
{
if ex.number==2627
MessageBox.show("Duplicate value cannot be inserted");
}
Я хочу эту функциональность. что не может быть достигнуто с помощью повышения. Я не хочу давать пользовательское сообщение об ошибке в конце.
RAISEERROR должен возвращать нижеупомянутую ошибку, когда я передаю ErrorNo для выброса в catch
Msg 2627, Level 14, State 1, Procedure spOTest_DomainInsert,
Строка 14
Нарушение ограничения UNIQUE KEY 'UK_DomainCode'. Не могу вставить
дубликат ключа в объекте
'Tags.tblDomain.
Заявление было прекращено.
EDIT:
Каким может быть недостаток не использования блока try catch, если я хочу, чтобы исключение обрабатывалось во внешнем интерфейсе, учитывая, что хранимая процедура содержит несколько запросов, которые необходимо выполнить