gpt4 book ai didi

string - SSIS:从字符串变量中过滤多个 GUID 作为数据流 OLE 源中的参数

转载 作者:行者123 更新时间:2023-12-01 10:05:18 24 4
gpt4 key购买 nike

我有一个 SSIS 包,它从 SQL 表中获取新 GUID 的列表。然后,我将 GUID 分解为一个字符串变量,以便用逗号将它们分隔开。它们如何出现在变量中的一个例子是:

'5f661168-aed2-4659-86ba-fd864ca341bc','f5ba6d28-7283-4bed-9f11-e8f6bef225c5'

问题出在数据流任务中。我将该变量用作 SQL 查询中的参数来获取源数据,但无法获取结果。当 WHERE 子句如下所示时:

WHERE [GUID] IN (?) 

我收到一个无效字符错误,所以我发现隐式转换不能像我想象的那样与 GUID 一起工作。如果这是单个 GUID,我可以通过在 GUID 周围放置 {} 来解决这个问题,但可能有 4 或 5 个不同的 GUID,这将需要在运行时检索。

我想我可以用这个来绕过它:

WHERE CAST([GUID] AS VARCHAR(50)) IN (?)

但这根本不会产生任何结果,在我当前的测试中应该有两个。

我认为一定有一种方法可以实现这一点......我错过了什么?

最佳答案

你不能,至少不能使用你提供的机制。

您不能连接值并使其与参数一起工作。

我愿意接受在这一点上被证明是错误的,但如果我能让它奏效,我会被诅咒。

我怎样才能让它发挥作用?

诀窍是老老实实地通过字符串构建/连接进行查询。

在我的包中,我定义了两个变量,filterquery。过滤器将是您已经在执行的连接。

查询将是一个表达式(右键单击,属性:将 EvaluateAsExpression 设置为 True,表达式类似于 "SELECT * FROM dbo.RefData R WHERE R.refkey IN ("+ @[User::filter] + ")"

在您的数据流中,然后将源从变量更改为 SQL 命令。那里不需要映射。

基本的外观是这样的

enter image description here

OLE 源查询

enter image description here

关于string - SSIS:从字符串变量中过滤多个 GUID 作为数据流 OLE 源中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11561754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com