#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 на вкладке дополнительные параметры. Спасибо, Алекс!