ssis中的错误执行sql任务

时间:2012-01-25 20:55:16

标签: sql-server ssis

我在foreach循环容器中放置了一个执行sql任务,我想在那里执行从ssis用户定义的变量中获取的存储过程名 但我没有找到一个正确的语法来从变量执行存储过程名称。我想传递输入参数来执行存储过程,这也是另一个dts变量 请任何人帮助找出正确的语法

enter image description here

2 个答案:

答案 0 :(得分:4)

假设您有两个变量StoredProcedureNameParameterValue

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

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

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

点击评估表达,您应该看到

Execute MyProcedure @ParameterName = 'SomeValue'

执行SQL任务将此变量分配给SourceVariable

答案 1 :(得分:1)

可以按照上面提供的方式构建你的字符串,但我不会从它开始。首先,它假设一切都是字符串,其次它可以让你开放sql注入(非常不可能,我同意)

要实际使用ADO.NET的原生参数映射,您需要使用@PlaceHolder进行变量替换。根据您的屏幕截图,@ [User :: StoredProcedureName]的值需要格式为EXECUTE schema.ProcName @ParameterName否则,您正在考虑将@Raj更多示例中的表达式与=...块无关

enter image description here

映射就像下面这样简单。确保选择正确的数据类型和参数名称以与查询相关联。

enter image description here