我有一个 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')
使用问号可以做到这一点吗?或者我必须以不同的方式做到这一点。
您不能使用参数占位符
?
在 SSIS 中表示多个值。
相反,您需要做的是经典的字符串构建以使您的查询正常工作。
创建两个字符串类型的变量:
QueryActual
和QueryParameters
QueryActual 将是以下表达式
"SELECT * FROM RandomTable WHERE left(prefix,3) IN (" + @[User::QueryActual] + ");"
现在,您已将问题域限制为构建 QueryParameters 的值,这与示例数据一起出现
'234','235'