SSIS参数映射到局部变量

时间:2013-09-13 18:02:43

标签: sql sql-server ssis

当我使用SQL命令作为SSIS中的数据访问来执行OLE DB源时,如何将参数映射到本地sql变量?

我想这样的事情:

DECLARE @BeginDate datetime
DECLARE @EndDate datetime

SET @BeginDate = ?
SET @EndDate = ?

SELECT * 
FROM Blah 
WHERE date BETWEEN @BeginDate  AND @EndDate

但是我收到错误消息“语法错误,权限违规或其他非特定错误”

而不是

SELECT * 
FROM Blah 
WHERE date BETWEEN ? AND ?

我有一些更复杂的查询,后面的方法会影响可读性。

2 个答案:

答案 0 :(得分:2)

OLE DB Source的MDSN文档的“使用参数化SQL语句”部分声明参数化查询“可以是SELECT或EXEC语句”。没有迹象表明SET语句可以按您正在尝试的方式进行参数化。

明显的解决方法是将复杂的查询放在存储过程中。 (并且,坦率地说,如果查询 复杂,代码的未来维护者将很高兴复杂性存储在存储过程中,而不是埋没在SSIS提供的糟糕代码编辑器中。)< / p>

答案 1 :(得分:0)

你不能分配'?'到SQL Server中的datetime变量。为变量分配一些有效(日期时间)值,然后您可以在SQL Server任务中使用您的查询。