【问题标题】:error in ssis execute sql taskssis执行sql任务出错
【发布时间】:2012-01-26 06:49:52
【问题描述】:

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

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    假设您有两个变量 StoredProcedureNameParameterValue

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

    然后单击Expression 中的省略号以打开表达式生成器。键入以下表达式

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

    点击Evaluate Expression,你应该会看到

    Execute MyProcedure @ParameterName = 'SomeValue'

    将此变量分配给您的SourceVariable,用于执行 SQL 任务

    【讨论】:

    • 感谢您的快速回复,我需要更多帮助,如果我的第二个变量@[User::ParameterValue] 是整数值,我如何构造表达式,它的抛出类型转换错误
    【解决方案2】:

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

    要实际使用 ADO.NET 的本机参数映射,您需要使用 @PlaceHolder 进行变量替换。根据您的屏幕截图,@[User::StoredProcedureName] 的值需要采用EXECUTE schema.ProcName @ParameterName 的格式,否则,您正在查看@Raj More 示例中的表达式,而没有=... 部分

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多