积极答复者
SSIS中如何实现参数的子查询功能

问题
-
我在做SSIS的时候,用“执行SQL任务”组件,里面写的源选择的是“OLEDB”,sqlstatment里面写了这样一条语句?“DELETE FROM dbo.FactDealerOrderDetail
where DealerOrderHeadKey in(
select DealerOrderHeadKey from dbo.FactDealerOrderHead
where DateKey between ? and ? )”,其实就是用了参数化子查询,然后运行错误,如何解决,不想用存储过程,希望详细一点,谢谢- 已编辑 zuocl 2009年11月23日 5:32
答案
-
请看以下的图。
执行sql任务组件
把第一个?映射到参数名0, 第二个?映射到参数名1。- 已标记为答案 Hong-Gang Chen - MSFTModerator 2009年11月25日 8:48
全部回复
-
出错信息为“[执行 SQL 任务] 错误: 执行查询“DELETE FROM FactDealerOrderDetail WHERE (DealerOrderHeadKey IN (SELECT DealerOrderHeadKey FROM FactDealerOrderHead WHERE (DateKey BETWEEN ? AND ?)))”失败,错误如下:“无法从带子选择的查询 SQL 语句中获得参数信息。在准备命令前,请设置参数信息。”。失败的原因可能有: 查询本身有问题、未正确设置 "ResultSet" 属性、未正确设置参数或未正确建立连接。 ”
-
http://msdn.microsoft.com/zh-cn/library/ms141696.aspx,msdn的解释,我看不懂!
“使用 OLE DB 连接管理器时,不能使用参数化子查询,这是因为 OLE DB 源不能通过 OLE DB 访问接口派生参数信息。但是,您可以使用表达式将参数值连接到查询字符串并设置该源的 SqlCommand 属性。在 SSIS 设计器中,您可以使用“OLE DB 源编辑器”对话框配置 OLE DB 源,并在“设置查询参数”对话框中将参数映射到变量。” -
请看以下的图。
执行sql任务组件
把第一个?映射到参数名0, 第二个?映射到参数名1。- 已标记为答案 Hong-Gang Chen - MSFTModerator 2009年11月25日 8:48
-
看不到图,能不能发到我的邮箱里面!zuoconglin@163.com,谢谢
-
-
看不到图,能不能发到我的邮箱里面!zuoconglin@163.com,谢谢
我已发邮件到你的邮箱。
请看看是否解决了你的问题。谢谢。
邮件收到,问题解决!谢谢