У вас есть два варианта сделать эту работу. Либо вы можете использовать один набор результатов, либо вы можете использовать параметр OUTPUT. Вы в настоящее время используете ни правильно.
Выходной параметр
Ваша хранимая процедура определяется как имеющая параметр @OrderCountс направлениемOUTPUT
Если вы хотите использовать хранимую процедуру в инструменте, SSMS, .NET, что угодно, это будет выглядеть примерно так
DECLARE @orderCount int = 0;
EXECUTE dbo.TestStoredProcSSVariable @orderCount OUTPUT;
SELECT @orderCount As OrderCountVariable;
Это верно для запуска вышеупомянутого без указания, OUTPUTно посмотрите на значение @orderCount. Изменяется с 1435 до 0.
То же самое верно, когда вы используете задачу «Выполнение SQL» в службах SSIS. Необходимо указать, что параметр находится в OUTPUT, а также указать его на вкладке «Сопоставления параметров».

Также укажите переменную, которую вы хотите отобразить, и используйте там направление OUTPUT. Здесь я отобразил результат в переменную SSIS типа Int32 с именемorderCount

Единый набор результатов
У вас есть первая часть этого правильного - вы указали, что набор результатов является одной строкой.
Вы заметите, что я использую, EXECUTE dbo.TestStoredProcSSVariable ?поскольку вы должны указать входное значение, иначе вызов proc прервется (по крайней мере, так, как вы его определили). Вы могли бы жестко закодировать значение вместо ?подобного0

Затем на вкладке «Набор результатов» я сопоставляю первый столбец (нулевой порядковый номер) с переменной orderCountb

Если вы запустите предоставленную хранимую процедуру, вы не получите значение в orderCountb. Почему? Потому что вы ничего не возвращаете из вызова хранимой процедуры. Я добавил заключительное утверждение внутри хранимой процедуры
SELECT @OrderCount AS OrderCount;
Сделай сам
Вы можете исследовать любой подход, используя следующий biml. Что такое BIML? Язык разметки Business Intelligence является операционной системой для BI. Почему вы заботитесь об этом, так это о том, что он позволит вам преобразовать некоторый XML в пакет служб SSIS. Все, что вам нужно сделать, это загрузить и установить бесплатный аддон BIDS Helper
После установки BIDS Helper,
- Щелкните правой кнопкой мыши по проекту и выберите «Добавить новый файл Biml».
- замените содержимое файла следующим XML
- Исправьте значения в строке 5. Обновите
Data Sourceсервер Providerдо реального сервера и приведите в соответствие с вашей версией SSIS. Глядя на ваш скриншот, скорее всего, это будет SQLNCLI10.1
- Щелкните правой кнопкой мыши на BimlScript.biml и выберите «Создать пакеты служб SSIS».
Bimlscript.biml
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<Connection
Name="tempdb"
ConnectionString="Data Source=.\dev2014;Initial Catalog=tempdb;Provider=SQLNCLI11.1;Integrated Security=SSPI;"
/>
</Connections>
<Packages>
<Package
Name="dba_114775"
ConstraintMode="Linear"
>
<Tasks>
<ExecuteSQL
ConnectionName="tempdb"
Name="SQL Make procedure">
<DirectInput>
<![CDATA[IF EXISTS
(
SELECT
*
FROM
sys.procedures AS P
INNER JOIN
sys.schemas AS S
ON S.schema_id = P.schema_id
WHERE
S.name = 'dbo'
AND P.name = 'TestStoredProcSSVariable'
)
BEGIN
DROP PROCEDURE dbo.TestStoredProcSSVariable
END
GO
CREATE PROCEDURE dbo.TestStoredProcSSVariable
(
@OrderCount int OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
SET @OrderCount = 1135;
SELECT @OrderCount AS OrderCount;
END
GO
]]>
</DirectInput>
</ExecuteSQL>
<Container Name="SEQC Result set" ConstraintMode="Linear">
<PrecedenceConstraints>
<Inputs>
<Input OutputPathName="SQL Make procedure.Output"></Input>
</Inputs>
</PrecedenceConstraints>
<Tasks>
<ExecuteSQL
ConnectionName="tempdb"
ResultSet="SingleRow"
Name="SQL SingleRow">
<DirectInput>EXECUTE dbo.TestStoredProcSSVariable ?;</DirectInput>
<Results>
<Result VariableName="User.orderCountb" Name="0" />
</Results>
<Parameters>
<Parameter DataType="Int32" VariableName="User.orderCountb" Name="0" />
</Parameters>
</ExecuteSQL>
<ExecuteSQL ConnectionName="tempdb" Name="SQL Placeholder">
<DirectInput>SELECT 1;</DirectInput>
</ExecuteSQL>
<ExecuteSQL ConnectionName="tempdb" Name="Execute SQL Task 2">
<DirectInput>SELECT 1;</DirectInput>
<PrecedenceConstraints>
<Inputs>
<Input
OutputPathName="SQL Placeholder.Output"
EvaluationOperation="ExpressionAndConstraint"
EvaluationValue="Success"
Expression="@[orderCount] < 5" />
</Inputs>
</PrecedenceConstraints>
</ExecuteSQL>
</Tasks>
</Container>
<Container Name="SEQC Output Parameter" ConstraintMode="Linear">
<PrecedenceConstraints>
<Inputs>
<Input OutputPathName="SQL Make procedure.Output"></Input>
</Inputs>
</PrecedenceConstraints>
<Tasks>
<ExecuteSQL
ConnectionName="tempdb"
Name="SQL Output parameter">
<DirectInput>EXECUTE dbo.TestStoredProcSSVariable ? OUTPUT;</DirectInput>
<Parameters>
<Parameter
DataType="Int32"
VariableName="User.orderCount"
Name="0"
Direction="Output" />
</Parameters>
</ExecuteSQL>
<ExecuteSQL ConnectionName="tempdb" Name="SQL Placeholder">
<DirectInput>SELECT 1;</DirectInput>
</ExecuteSQL>
<ExecuteSQL ConnectionName="tempdb" Name="Execute SQL Task 2">
<DirectInput>SELECT 1;</DirectInput>
<PrecedenceConstraints>
<Inputs>
<Input
OutputPathName="SQL Placeholder.Output"
EvaluationOperation="ExpressionAndConstraint"
EvaluationValue="Success"
Expression="@[orderCount] < 5" />
</Inputs>
</PrecedenceConstraints>
</ExecuteSQL>
</Tasks>
</Container>
<ExecuteSQL ConnectionName="tempdb" Name="SQL Placeholder">
<DirectInput>SELECT 1;</DirectInput>
<PrecedenceConstraints>
<Inputs>
<Input OutputPathName="SEQC Result set.Output" />
<Input OutputPathName="SEQC Output Parameter.Output" />
</Inputs>
</PrecedenceConstraints>
</ExecuteSQL>
</Tasks>
<Variables>
<Variable DataType="Int32" Name="orderCount">-1</Variable>
<Variable DataType="Int32" Name="orderCountb">-1</Variable>
</Variables>
</Package>
</Packages>
</Biml>
Наслаждайтесь следующим пакетом служб SSIS

@[User::orderCount]