Как использовать набор результатов из запроса в редакторе ограничений для условного выполнения задачи SQL? - PullRequest
0 голосов
/ 30 января 2019

Мой SQL-скрипт хранится в @gempar = NULL и в @beneficiary = '2018-01-01'.При необходимости выполнить следующие задачи «Выполнение SQL» на основе содержимого этих переменных.Если ISNULL(@gempar) = True, то мы не запускаем следующую задачу (потому что тогда @gempar равно NULL ).С другой стороны, ЕСЛИ ISNULL(@beneficiary) = False тогда мы запускаем следующую задачу (потому что @beneficiary не равен NULL ).

enter image description here

Следующим изображением является Результирующий набор из задачи «Выполнение SQL»:

enter image description here

Я создал 2 переменные, бенефициар и gemparв SSIS, но я не уверен, должны ли они быть записаны в столбце выражения следующим образом: @[User::gempar] и @[User::beneficiary] или как они теперь на следующем изображении:

enter image description here

Это поток управления службами SSIS:

enter image description here

Редактор ограничений предшествования должен бытьПравда.Почему он не перехватывает значение в @beneficiary?

enter image description here

Я ожидаю, что задача TRUNCATE GEMPAR TABLES остановится и TRUNCATE BENE TABLES Задание для продолжения.

1 Ответ

0 голосов
/ 30 января 2019

SSIS не допускает, чтобы переменные SSIS были нулевыми.Он несколько старше и в несколько ином контексте, но эта статья более детально описывает переменные SSIS в отношении нуля.Поскольку используемые переменные имеют строковый тип данных, можно сравнить переменную с пустой строкой.Имейте в виду, что не гарантирует , что эти переменные были нулевыми в результате того, что было выполнено в задаче «Выполнение SQL».Для этого вам может понадобиться заменить пустые строки или другое значение в вашем выражении SELECT.Например, COALESCE(@beneficiary , '').

Щелкните правой кнопкой мыши Ограничение приоритета между задачами, выберите Изменить.Затем измените Операцию оценки на Выражение и добавьте выражение следующим образом.В зависимости от ожидаемого результата операция оценки может потребоваться изменить на Выражение и ограничение , при этом статус предыдущей задачи установлен в поле Значение.В приведенном ниже примере возвращается значение true, если переменная @[User::beneficiary] равна нулю, что позволит выполнить следующую задачу, как описано выше.Вы можете изменить это, т.е. использовать != для переменной @[User::gempar].

@[User::beneficiary]) == ""
...