SSIS Execute SQL Task работает, но отображает сообщение об ошибке в отчете о выполнении

Моя задача «Выполнение SQL» выполняет хранимую процедуру. Если он получает какие-то записи, то переходит к задаче по созданию отчета. В противном случае отправляется задача сценария для отправки электронного письма. Для ResultSet установлено значение «Одна строка».

Все работает так, как ожидалось. Однако, если хранимая процедура не возвращает ни одной строки, она по-прежнему отправляет электронное письмо, но создает сообщение о сбое в отчете о выполнении SQL. В сообщении об ошибке говорится:

Произошла ошибка при присвоении значения переменной «Переменная»: «Указан однострочный набор результатов, но строки не возвращены».

Я не могу изменить свою хранимую процедуру. Каковы мои варианты «исправить» эту ошибку. (Мой пакет работает, как и ожидалось.)


person Jay    schedule 10.03.2017    source источник
comment
Каковы тип данных и значение по умолчанию вашей переменной?   -  person manderson    schedule 10.03.2017


Ответы (1)


Вы должны добавить некоторую проверку в свой Execute SQL Task, чтобы избежать пустых наборов результатов.

  1. Вставить результат в временную таблицу
  2. Проверьте, содержит ли временная таблица строки
  3. Если нет, выберите незначащую строку

    CREATE #TempTable (Column0 Varchar(50), Column1 varchar(50), ....)
    
    INSERT INTO #TempTable
    EXEC Proc
    
    DECLARE @intCount INT
    
    SELECT @intCount = COUNT(*) FROM #TempTable
    
    IF @intCount > 0
    SELECT TOP 1 * FROM #TempTable
    ELSE
    SELECT 0
    
  4. Добавить выражение в задачу отправки почты (If Not Empty Row --> Send Mail)

person Hadi    schedule 10.03.2017