我正在从c#执行.dtsx包,它正在执行正常,如果我从c#代码传递一个变量值,那我怎样才能在.dtsx包上获取我的ole db源查询。这是我的c#代码。
string file = @"D:\CYNCZFuzzy\CYNCZFuzzy\Contact.dtsx";
package = app.LoadPackage(file, null);
Variables vars = package.Variables;
vars["User::parentContactID"].Value = 1028203;
pkgResults = package.Execute();
string result = pkgResults.ToString();
我的ole db源查询需要1028203值,这是我的查询。
select cr.MasterContactID as ParentContactID,
c.ID,C.FirstName,
C.MiddleName,
c.LastName,
c.ID as FieldID
from Contact c inner join
ContactRelation cr on cr.SlaveContactID = c.ID
where RelationshipID = 1
AND cr.MasterContactID = ?
我应该写什么?从c#page获得1028203值。
提前致谢...
答案 0 :(得分:1)
您必须在执行SQL任务中map variables to parameters另请参阅Working with Parameters and Return Codes in the Execute SQL Task和OLEDB Source。
不幸的是,文档确实在房子周围散布了一些东西,SSIS需要精神柔道。
答案 1 :(得分:0)
编辑OLE DB源组件
在您看到的第一个对话框中,Connection Manager应在左侧突出显示
右侧是第一个框中的连接管理器名称( OLE DB connectionManager:),第二个框中的SQL命令(数据访问模式:),第三个框中将包含您在上面的问题中提供的Sql文本( SQL命令文本:)
在SQL命令文本:框的右侧,将有四个按钮
该组中的顶部按钮名为参数... 。单击此按钮将弹出一个子对话框。此对话框中只有一个框标有映射:
在此框的参数标题下,应该有一个名为Parameter0的参数(这是根据查询中问号的数量和位置预先填充的,即查询中的第一个?创建参数0,第二个问号创建参数1 ,查询中的第n个问号会创建一个参数(n-1)。此框中的另一列标记为变量。
如果单击变量下面的文本框,您可以看到它变为下拉文本框。您可以将其删除并选择与您的变量“User :: parentContactID”匹配的条目,然后单击确定以关闭子对话框,再次单击确定以关闭OLE DB源编辑对话框。这将以您在原始问题中要求的方式添加参数。