2012-01-25 117 views
0

我已经在foreach循环容器内放置了一个执行sql任务,在那里我想执行从ssis用户定义的变量获取的存储过程名称 但我找不到一个正确的语法来执行存储过程名称来自变量。我想通过输入参数来执行存储过程,这也是一个又一个DTS变量 请任何一个可以帮助找出正确的语法错误ssis执行sql任务

enter image description here

回答

4

比方说你有两个变量StoredProcedureNameParameterValue

创建一个名为QueryString的新变量。按F4打开属性窗口,然后在具有变量列表的窗口中单击变量名称。将QueryString变量的EvaluateAsExpression属性设置为True。

然后单击Expression中的椭圆以打开表达式生成器。键入下面的表达式

"Execute " + @[User::StoredProcedureName] + " @ParameterName = '" + @[User::ParameterValue]+ "'" 

点击计算表达式,你应该看到

Execute MyProcedure @ParameterName = 'SomeValue'

分配此变量设置为SourceVariable执行SQL任务

+0

感谢您的快速回复,我需要一个更多的帮助,在这里,如果我的第二个变量@ [用户::的parameterValue]是整数值,我该如何构建这样的表达,它的投掷类型转换错误 – mahesh

1

可以建立你的字符串,如上所述,但我不会从它开始。首先,它假设一切都是字符串,第二它可以想象开放你到SQL注入(很不可能,我同意)

要真正使用ADO.NET的原生参数映射,您需要使用@PlaceHolder变量替代。根据您的截图,@的值[用户:: StoredProcedureName]需要有EXECUTE schema.ProcName @ParameterName否则的格式,你看从补鞋更多@Raj的例子表达,而不=...

enter image description here

映射如下所示。确保选择正确的数据类型和参数名称以与您的查询相关联。

enter image description here