2

我有一个创建临时表的 SQL 任务,然后是一个从该临时表中选择的数据流任务。一切正常,花花公子,但是当我向 SQL 任务添加参数时,数据流任务失败,说临时表没有创建。硬编码参数值有效。

保留相同的连接选项为真,设置了元数据,并且我的 Int32 变量被映射为名称为 0 和 1,大小为 -1 用于 oledb。

我设法以较小的规模复制它

SQL 任务

DECLARE @Yesterday DATETIME
DECLARE @Today DATETIME

DECLARE @StartDisposition INT = ?
DECLARE @EndDisposition INT = ?

SET @Yesterday = CONVERT (date, DATEADD(day, @StartDisposition, GETDATE()))
SET @Today = CONVERT (date, DATEADD(day, @EndDisposition, GETDATE()))

SELECT @StartDisposition AS A, @Yesterday AS B, @Today AS C INTO #TempT

数据流任务,或者只是一个用于此目的的 SQL 任务

SELECT * FROM #TempT

所以带有参数的东西似乎弄乱了临时表的创建。

谢谢

对查询使用字符串变量表达式有效。这是怎么回事。

"DECLARE @Yesterday DATETIME
DECLARE @Today DATETIME

DECLARE @StartDisposition INT = " + (DT_STR, 20, 1252)@[User::StartDisposition] + "
DECLARE @EndDisposition INT =  " + (DT_STR, 20, 1252)@[User::EndDisposition] + "

SET @Yesterday = CONVERT (date, DATEADD(day, @StartDisposition, GETDATE()))
SET @Today = CONVERT (date, DATEADD(day, @EndDisposition, GETDATE()))

SELECT @StartDisposition AS A, @Yesterday AS B, @Today AS C INTO #TempT"

然后在 SQL 任务中将 SQLSourceType 更改为变量

谢谢大家的帮助。

4

1 回答 1

0

有时很奇怪。但是如果我们创建全局临时表(##TempT)就可以解决

于 2014-12-23T14:02:08.483 回答