Это немного обходной путь, но он работает довольно хорошо. Мы создаем хранимую процедуру SetVar, которая будет принимать входной параметр и назначать его объявленному выходному параметру.
Создайте процедуру с именем SetVar в исходной базе данных OLE DB. Он присваивает @inputVar @ outVar
CREATE PROC SetVarInt
@inputVar INT ,
@outVar INT OUTPUT
AS
BEGIN
SELECT @outVar = @inputVar;
END
В источнике OLE DB службы SSIS используйте этот SQL:
DECLARE @param1 INT;
EXEC [dbo].[SetVarInt] @inputVar = ?, -- int
@outVar = @param1 OUTPUT -- int
SELECT * FROM [dbo].[GetByKey](@param1)
Если ничего не происходит, оптимизатор мог оптимизировать задачу (проверьте журнал выполнения пакета). В этом случае я добавлю следующее в конец исходного кода OLE DB и подключу этот вывод к задаче RowCount в фиктивную переменную.
SELECT 1 Done;