У меня есть пакет SSIS, выполняющий динамический SQL. Динамический SQL иногда будет иметь набор результатов, а иногда нет, но я хочу зафиксировать только COUNT, который является возвращаемым значением в приведенном ниже сценарии.
(или я могу использовать задачу C# Script для выполнения этого?), я знаю, что могу перебирать наборы записей в C#, но у меня не всегда будет 2, есть ли способ определить разницу в наборах результатов по имени или что-то в этом роде, или только по индексу массива в наборе результатов [x]?
-- These are passed values in SSIS as paramaters
DECLARE @VariablePassedForSelect AS VARCHAR(50) = ?
DECLARE @ScriptToExecute NVARCHAR(MAX) = ?
-- putting return value count from dynamic script into variable
DECLARE @ReturnRowsEffectedA INT
-- this MAY (or may not) return a result set as dynaic code
exec sp_executesql @ScriptToExecute, N'@VariablePassedForSelect BIGINT, @ReturnRowsEffected INT OUTPUT', @VariablePassedForSelect = @VariablePassedForSelect, @ReturnRowsEffected = @ReturnRowsEffectedA OUTPUT
-- now select results for returning,this is only value I want
SELECT @ReturnRowsEffectedA AS RowCountR
Все это отлично работает в SQL и возвращает набор результатов из динамического SQL и количество, но я хочу только, чтобы COUNT возвращался в переменную в SSIS.
Если я использую набор результатов, я получаю ошибку для одной строки (поскольку динамический sql может возвращать результаты и подсчитывать).
Три причины, по которым я делаю это таким образом, а не использую SP или другие средства, но эти детали не требуются для моего вопроса.
Как я могу зафиксировать только значение для @ReturnRowsEffectedA?
@ReturnRowsEffectedA
в качестве выходного параметра на панелиParameter Mapping
файлаExecute SQL Task
. Простой пример приведен по адресу sqlserverrider.wordpress.com/2014/08/31/ - person digital.aaron   schedule 24.01.2020