我有一个数据流正常工作,它是由查找组件评估的源的复合,然后它执行upsert,图表显示在这里:
现在,在BanqueCIBI(ole db源代码)上,我有一个SQL命令文本,我希望从另一个组件接收一个参数,将其用作valueDate。这是现在的查询:
SELECT [IdTransactionType]
,[IdBank]
,[IdBanqueDetailHistoryRef]
,[IdBanqueDetail]
,[IdBanqueHeader]
,[CCI]
,[ValueDate]
,[Text]
,[Reference]
,[Amount]
,[Sign]
,[IdCurrency]
,[OrigBranch]
,[dtCreatedOrModified]
,[oldText]
,[oldReference]
,[IdAccount]
,[IdSubAccount]
,[Date]
,[IdRD]
,[Flag]
,[History]
,[DtDate]
,[iTIB]
,[iSAP]
FROM [dbCibi3].[dbo].[BanqueDetailHistoryRef]
WHERE [ValueDate] = '2015-31-01'
这是上面源代码中调用的usp_GetDateParamsSSIS:
USE [dbMODIFE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_GetDateParamSSIS]
@name VARCHAR(50) = NULL,
@value DATETIME OUTPUT
AS
BEGIN
SELECT TOP 1 @value =valueDate FROM helperPARAMS_SSIS WHERE name = @name;
END
那么,我如何在BanqueCIBI组件上使用@value OUTPUT?非常感谢! (请注意,BanqueCibi和新组件正在查询不同的服务器,并且由于公司的政策,链接服务不是一种选择。
答案 0 :(得分:3)
好的,既然你要将一个硬编码的Name参数传递给你的存储过程,我假设这是一个存储过程,你只需要为每次执行包调用一次,而不是你需要的东西。为数据源中的每一行调用一次。
在这种情况下,请勿在数据流中使用OLE DB命令调用存储过程。
而是使用您在命令流中的DataFlow任务之前放置的执行SQL任务来调用它。将proc的返回值指向包级变量。
然后在数据流源(BanqueCIBI)中,将该变量映射到SELECT查询的第一个参数。
互联网上很容易找到所有这些技术的例子。但是,如果您发现自己遇到问题,请随时根据详细信息编辑您的问题,或者如果范围与此问题的范围大不相同,请创建一个新问题。