Большинство обсуждений в Интернете, касающихся обработки ошибок SQL Server, похоже, сосредоточены на том, как изящно обрабатывать ошибки, возникающие при обработке T-SQL, с использованием THROW или TRY...CATCH и т. д.
У меня есть хранимая процедура, которая принимает несколько параметров. Некоторые из этих параметров должны иметь значения только в определенном диапазоне, поэтому в начале моей процедуры я хочу проверить значения, которые были переданы из приложения (ASP.NET), и вернуть ошибку, если они не находятся в пределах диапазона. приемлемые границы.
На данный момент у меня есть:
IF @RequesterType <> 2 AND @RequesterType <> 3
BEGIN
RAISERROR('The value for RequesterType must be either 2 (Client) or 3 (Representative)', 10, 1)
RETURN;
END
Когда я выполняю процедуру, содержащую этот код, из SSMS и передаю значение, отличное от 2 или 3, конечно, отображается указанное мной сообщение. Но это не кажется... достаточно серьезным. Не кажется очевидным, что произошла фактическая ошибка.
Я знаю, что можно указать параметр серьезности оператора RAISERROR, но если я не собираюсь делать его очень высоким (я полагаю,> 19), указывающим на фатальную системную ошибку, я не думаю, что это будет иметь большое значение. .
Мне просто интересно, с тем кодом, который у меня есть, когда веб-приложение вызывает эту процедуру, оно действительно узнает, что произошла ошибка. Будет ли код VB.NET, вызывающий процедуру, знать, что произошла ошибка? Если нет, то как я могу переписать свою процедуру, чтобы она работала? Я уверен, что есть лучший способ сделать это, но в данный момент я чувствую, что пытаюсь его взломать.
Я использую SQL Server 2012.
RAISERROR
) обратно в веб-приложение. Я бы сказал, что вы сделали свою часть. - person Dave Mason   schedule 12.06.2014