SSIS 使用 ?作为在 OLEDB 中使用 (IN) 在 SQL 查询中传递的值,但有多个值

问题描述 投票:0回答:1

我有一个 ssis 包。

它运行一个 for 循环,循环传递到 oledb 源中的 sql 命令中的参数值。

此循环基于 sql 表中的值。

该表有 1 列称为前缀,具有以下值:

Record 1: 234,235
Record 2: 434,435

这是oledb中的sql查询

SELECT *
FROM RandomTable
WHERE left(prefix,3) in (?)

当它运行时,它会读取参数中的第一个值,但不会读取第二个值。 所以当它运行时它会执行:

left(prefix,3) in ('234')

但我希望它能够执行:

left(prefix,3) in ('234','235')

使用问号可以做到这一点吗?或者我必须以不同的方式做到这一点。

sql ssis
1个回答
0
投票

您不能使用参数占位符

?
在 SSIS 中表示多个值。

相反,您需要做的是经典的字符串构建以使您的查询正常工作。

创建两个字符串类型的变量:

QueryActual
QueryParameters

QueryActual 将是以下表达式

"SELECT * FROM RandomTable WHERE left(prefix,3) IN (" + @[User::QueryActual] + ");"

现在,您已将问题域限制为构建 QueryParameters 的值,这与示例数据一起出现

'234','235'
© www.soinside.com 2019 - 2024. All rights reserved.