Ошибка SQL — повышения в Sproc, когда результирующий набор select пуст

#sql #sql-server-2005

#sql #sql-server-2005

Вопрос:

Я пытаюсь выполнить хранимую процедуру на шаге задания SQL (SQL Server 2005).
Я хочу вызвать ошибку и завершить выполнение шага задания, когда результирующий набор выполняемой мной хранимой процедуры не пуст.

что делает моя хранимая процедура — у меня есть оператор select, в котором строки отображаются, если текущая дата равна дате в одном из столбцов таблицы.

 SELECT 
Holiday_date
from tblHolidays 
where 
CONVERT(VARCHAR(10),GETDATE(),101) = CONVERT(VARCHAR(10),Holiday_date,101)
  

Если результирующий набор пуст, я хочу успешно выполнить шаг задания и перейти к следующему шагу задания.

Есть мысли о том, как заставить это работать.

Спасибо

Ответ №1:

Вы можете попробовать, RAISERROR хотя я не могу вспомнить, приведет ли это к сбою всего задания, если оно использует один из уровней серьезности предупреждения.

 IF @@ROWCOUNT > 0
  RAISERROR ('found data', 16, 1)
  

Комментарии:

1. должно было бы быть IF @@ROWCOUNT <= 0 — raise ошибка, когда результирующий набор пуст

2. Да, но я прочитал op как желающий ошибку, когда есть записи.

3. Алекс прав, я хочу вызвать ошибку при наличии записей

4. Мне удалось перехватить пользовательское сообщение об ошибке и завершить задание в истории заданий SQL JOB. Мне пришлось выбрать этот параметр при настройке шага задания sproc exec на вкладке дополнительные параметры. Спасибо, Алекс!