我是SSIS的新手,请原谅我,如果这个问题很简单或已经得到回答。所以我有一个SQL查询,开头如下:
declare @start datetime, @end datetime, @startMonth datetime, @endMonth datetime, @maxHoursToRespond int
----Set These------------------------------------------------
set @end='6/27/2014'
set @maxHoursToRespond=24
-------------------------------------------------------------
set @start=dateadd(dd, -90, @end) -- set duplication period
set @startMonth=dateadd(dd, -2, @end)-- set to start date of output you want
set @endMonth=dateadd(dd, -1, @end) -- set to day of end date of output you want
当我把它放在带有SQL命令的OLE DB源编辑器中作为我的数据访问模式时, 所有变量都用问号代替。 它看起来像:
DECLARE ? datetime, ? datetime, ? datetime, ? datetime, ? int
/*--Set These------------------------------------------------*/ SET ? = ?
SET ? = 24
/*-----------------------------------------------------------*/ SET ? = dateadd(dd, - 90, ?)
SET ? = dateadd(dd, - 2, ?)
SET ? = dateadd(dd, - 1, ?)
在查询构建器中。我想知道为什么会发生这种情况。我也想知道如何才能成功构建查询 (目前我得到的语法错误是“不支持声明SQL构造或语句。”)。 我是否必须在SSIS中创建这些变量(如@start)?
答案 0 :(得分:1)
你可以:
EXEC My_Stored_Procedure
Exec My_Stored_Proc ?,?,?,?
,用户变量映射到相应的存储过程变量。数字2是普遍接受的方法,除非您将变量值存储在表中或SP中可以访问的内容中,否则数字1可能更清晰。
答案 1 :(得分:1)
我已直接粘贴到SQL command text
中的OLE DB Source Editor
脚本,但没有任何变化。按Parse Quesry..
我检查了SQL是否正确。当我尝试使用Build Query..
时,它说,DECLARE
不受支持。所以不要使用builder:)