如何在 SSIS 变量的 where 语句中传递多个值?
How to pass multiple values in where statement in SSIS variable?
我正在创建一个 SSIS 程序包,它有两个变量,它们将赋值给另一个 SQL 命令变量。数据源是 ODBC 连接器,目标是 OLEDB 连接器。
变量名称:
- vPurchaseType(多个值)
- vTransactionDate(单值)
- vPSourceQuery(SQL接收其他两个变量的语句)
一个变量是一行,这个行。另一个变量是将在 IN
子句中摄取的多个值。但是我无法在这个中传递多个值,我已经尝试了 Single row
或 Full result set
但也不起作用。
第一个变量结果(vPurchaseType):
查询示例:
SELECT Head FROM TableB
Head
12
9C
AA
第二个变量必须在单引号之间才能工作。
第二个变量结果(vTransactionDate):
查询示例:
SELECT Head FROM TableA
Head
2020-01-01
第三个变量:
SELECT
ColA,
ColB,
ColC,
ColD
FROM TableC
WHERE ColC >= '"+ @[User::vTransactionDate] + "'
AND ColD IN ("+ @[User::vPurchaseType] +")
我的包裹:
基本上,我使用的是 MyTecBits - SQL Server: Concatenate Multiple Rows Into Single String 中这篇文章的解决方案,并将其应用于我的变量 vPurchaseType,并接收值为 Single Row
.但是我不得不稍微更改一下查询,使用函数 CAST AS VARCHAR (4000)
接受我列中的所有数据。
之后我更改了 Data Flow
,并将 OLEDB Destination
替换为 ADO Net Destination
,我还必须将选项 ValidadeExternalMetadata
标记为 False
,就是这样!现在正在工作。
我正在创建一个 SSIS 程序包,它有两个变量,它们将赋值给另一个 SQL 命令变量。数据源是 ODBC 连接器,目标是 OLEDB 连接器。
变量名称:
- vPurchaseType(多个值)
- vTransactionDate(单值)
- vPSourceQuery(SQL接收其他两个变量的语句)
一个变量是一行,这个行。另一个变量是将在 IN
子句中摄取的多个值。但是我无法在这个中传递多个值,我已经尝试了 Single row
或 Full result set
但也不起作用。
第一个变量结果(vPurchaseType):
查询示例:
SELECT Head FROM TableB
Head |
---|
12 |
9C |
AA |
第二个变量必须在单引号之间才能工作。
第二个变量结果(vTransactionDate):
查询示例:
SELECT Head FROM TableA
Head |
---|
2020-01-01 |
第三个变量:
SELECT
ColA,
ColB,
ColC,
ColD
FROM TableC
WHERE ColC >= '"+ @[User::vTransactionDate] + "'
AND ColD IN ("+ @[User::vPurchaseType] +")
我的包裹:
基本上,我使用的是 MyTecBits - SQL Server: Concatenate Multiple Rows Into Single String 中这篇文章的解决方案,并将其应用于我的变量 vPurchaseType,并接收值为 Single Row
.但是我不得不稍微更改一下查询,使用函数 CAST AS VARCHAR (4000)
接受我列中的所有数据。
之后我更改了 Data Flow
,并将 OLEDB Destination
替换为 ADO Net Destination
,我还必须将选项 ValidadeExternalMetadata
标记为 False
,就是这样!现在正在工作。