SSIS - 在 OLE DB 源中仅指定一个参数,其中包含多个“?”

SSIS - specify only one parameter in OLE DB Source with multiple '?'

在编写我的 SQL 命令时,我指定 ? 以表明我想使用传入的参数。但是,对于我使用的每个 ?,包都认为它是一个新参数,即使我想使用相同的参数也是如此。

6 ? = 6 个新参数,尽管每个参数都相同。如参数 0 和 1

所示

有没有一种方法可以只指定一个参数?

谢谢

您能否在 SQL 语句脚本中声明一个变量,通过 ? 获取参数的值,然后使用该变量?

在 SQL 服务器上创建一个带有一个参数并包含正确查询的存储过程。使用一个参数调用存储过程。

您可以通过在 SQL 命令中声明一个变量并向其传递一个参数然后在 WHERE 子句中使用该变量来实现此目的。像下面这样

DECLARE @str AS INT

SET @str = ?

SELECT        Column1
FROM            Table1
WHERE        (Column2= @str or Column3 = @str)

其他解决方法

1)

假设您要创建以下查询

Select * From Table1 Where [Column1] = ? Or [Column2] = ?
  1. 声明一个变量(例如:User::strQuery
  2. 将您的参数存储在变量中(例如:User::Value
  3. 将变量 EvaluateAsExpression 属性 设置为 True
  4. 将表达式设置为以下内容:

    "Select * From Table1 Where [Column1] = " + @[User::Value] + " OR [Column2] = " + @[User::Value]
    
  5. OLEDB Source中设置源为SQL Command from variable并选择变量@[User::strQuery]

2)

您可以创建一个存储过程或一个 table 值函数,它们接受一个参数并将其用作源