由于您使用的是 OLE DB 连接管理器,因此您需要使用?
来指示参数的位置。
因此,您的查询变为
EXECUTE ? = [dbo].[spRandomReturn]
在您的参数映射中,您将拥有
再生产
Biml,商业智能标记语言,描述了商业智能平台。在这里,我们将使用它来描述 ETL。BIDS Helper是 Visual Studio/BIDS/SSDT 的免费插件,解决了它的许多缺点。具体来说,我们将使用将描述 ETL 的 Biml 文件转换为 SSIS 包的能力。这样做的另一个好处是为您提供了一种机制,可以准确地生成我所描述的解决方案,而不是单击许多繁琐的对话框。
您可以在下面的 XML 中看到,我创建了一个名为 CM_OLE 的连接,它指向 tempdb 中的 localhost\dev2014。您需要修改它以反映您的环境。
我创建了一个名为 so_28419264 的包。这个包包含 2 个变量。一个是Query
包含第一位代码的。第二个是ReturnValue
我们将用来捕获映射选项卡上的返回值。我将这个初始化为 -1,因为提供的存储过程永远不会产生负值。
我添加了两个任务,都是执行 SQL 任务。第二个什么都不做,它只是作为我设置断点的一个点。第一个执行 SQL 任务是我们调用存储过程并将结果分配给我们的变量的地方
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<OleDbConnection Name="CM_OLE" ConnectionString="Data Source=localhost\dev2014;Initial Catalog=tempdb;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;" />
</Connections>
<Packages>
<Package ConstraintMode="Linear" Name="so_28419264">
<Variables>
<Variable DataType="String" Name="Query">EXECUTE ? = [dbo].[spRandomReturn];</Variable>
<Variable DataType="Int32" Name="ReturnValue">-1</Variable>
</Variables>
<Tasks>
<ExecuteSQL ConnectionName="CM_OLE" Name="SQL Demonstrate Return Value">
<VariableInput VariableName="User.Query" />
<Parameters>
<Parameter DataType="Int32" VariableName="User.ReturnValue" Name="0" Direction="ReturnValue" />
</Parameters>
</ExecuteSQL>
<ExecuteSQL ConnectionName="CM_OLE" Name="Put Breakpoint on me">
<DirectInput>SELECT 1;</DirectInput>
</ExecuteSQL>
</Tasks>
</Package>
</Packages>
</Biml>
结果
有用