首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有变量的数据流问题中的OLE DB源

带有变量的数据流问题中的OLE DB源
EN

Stack Overflow用户
提问于 2019-04-18 13:39:51
回答 2查看 213关注 0票数 2

在尝试调用OLE DB源任务中的proc时,我遇到了一个令人沮丧的问题。我在变量数据访问模式下使用SQL命令,但是我可以看到它没有正确地计算我的变量。

我的变量( ValidateAsExpression设置为True)使用表达式创建类似“EXEC sql‘Param’”的ProcName命令,其中Param的值来自我使用EXEC SQL任务设置的变量的值。下面是表达式:

代码语言:javascript
复制
“EXEC ProcName ” + “‘” + @[User::vDateThreshold] + “‘”

如果我在源代码中使用引用静态值的变量,它可以正常工作,但问题似乎是当我在表达式中使用引用另一个变量的变量时。

还有没有人遇到过这个问题?

我之所以使用这种方法,是因为我在尝试将参数与sql命令数据访问方法一起使用时遇到了类似的问题。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2019-04-19 01:41:09

@[User::vDateThreshold的名称来看,它看起来像是一个SSIS datetime变量。尝试将其设置为显式强制转换的变量,然后使用该变量执行存储过程。确保CAST函数中有单引号('),如果这是在SSMS中完成的,您将使用它。在SSIS中连接字符串变量中的datetime变量时,必须将datetime变量转换为文本,这是在下面的示例表达式中使用(DT_STR, length, codepage)完成的。我不确定你使用的是什么版本,但在SSDT for Visual 2017上测试这个版本对我来说很好。如果你仍然想把SQL放在一个变量中,这将包括在内,然而,如果你更喜欢这样做,@Hadi发布的解决方案是一个很好的选择。

代码语言:javascript
复制
"DECLARE @pDate DATETIME
SET @pDate =  CAST('" + (DT_STR, 50, 1252)@[User::vDateThreshold]  + "' AS DATETIME)
EXEC ProcName @pDate"
票数 0
EN

Stack Overflow用户

发布于 2019-04-23 08:18:57

感谢您对我的问题的回复。

实际上,我发现问题出在包中任务的排序上。当我在exec SQL任务中使用断点仔细查看分配给相关变量的值时,我可以看到错误的日期被传递给了我的proc。当我在较早的时间点设置vDateThreshold的值时,分配了正确的日期值。

我认为这是一个长时间关注某件事的案例,以至于我错过了显而易见的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55739727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档