我在foreach循环容器中放置了一个执行sql任务,我想在那里执行从ssis用户定义的变量中获取的存储过程名 但我没有找到一个正确的语法来从变量执行存储过程名称。我想传递输入参数来执行存储过程,这也是另一个dts变量 请任何人帮助找出正确的语法
答案 0 :(得分:4)
假设您有两个变量StoredProcedureName
和ParameterValue
创建一个名为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更多示例中的表达式与=...
块无关
映射就像下面这样简单。确保选择正确的数据类型和参数名称以与查询相关联。