Я хочу динамически построить запрос (который всегда будет оператором SELECT) внутри строковой переменной, передать его в качестве аргумента в EXEC (), а затем:
-Если оператор EXEC ()обнаруживает ошибку, перейдите к моей пользовательской обработке ошибок.
-В противном случае продолжайте, фактически не выбирая результаты на моей панели результатов (я буду делать это часто в рамках хранимой процедуры, поэтому панель будет легко загромождена).
Я попытался выполнить попытку / перехватить при включении и выключении NOEXEC, ожидая увидеть «Обнаружена ошибка деления на ноль», но вместо этого просто вижу «Команды успешно выполнены».
DECLARE @sql varchar(max)
SET @sql = 'SELECT 2 / 0;'
BEGIN TRY
SET NOEXEC ON;
EXEC(@sql)
SET NOEXEC OFF;
END TRY
BEGIN CATCH
PRINT('Zero division error encountered')
END CATCH
В основном я хочу воспользоваться преимуществом NOEXEC для уменьшения помех, но если в запросе возникает ошибка, я хочу ее обработать.